这似乎是一个简单但又令人困惑的问题。我已经使用离子1很长一段时间了,两年前才接触到离子2+,但已经有一段时间没有使用它了。
最近,我注意到Ionic发布了Ionic PWA,但我不能理解它们是同一个项目的一部分,还是完全分开的。我知道Ionic PWA是一个web应用程序框架,而传统的Ionic仅用于/推荐用于混合应用程序。
所以我的问题是:
谢谢!
UPDATE这个问题是在错误的假设下提出的,即Ionic PWA是一个独立但类似于原始Ionic的框架。显然,Ionic PWA只是原始Ionic的一个术语,只是做了一些细微的修改(你必须自己做)才能使它成为PWA。
发布于 2018-06-10 02:57:05
PWA与混合应用的不同之处在于,它们在web浏览器的上下文中运行,而不是在操作系统级别的WebView (更多关于Android和iOS的WebViews )中运行。PWA就像一个网页,它有自己的应用程序图标,并在没有标签和地址栏等的全屏web浏览器中运行。
正因为如此,PWAs不能像混合应用程序一样访问原生功能。例如,如果你想在混合应用程序中访问手机的摄像头,你可以使用类似Cordova插件的东西(在你的离子应用程序中,你可以使用@ionic-native/camera)。要从PWA (本质上是从web浏览器)访问摄像头,Cordova将不起作用--您需要使用web API (see what web APIs can do!)。
由于PWA的架构需要与常规混合应用程序的架构完全不同(应用程序越复杂,分歧就越大),Ionic已经扩展了Ionic PWA,以帮助开发人员更轻松地创建PWA。
要使您的Ionic3应用程序作为PWA运行:如果您使用ionic start
从某个Ionic starter应用程序模板创建您的离子应用程序,您可以做两件事来使您的应用程序作为PWA运行。
manifest.json
文件添加到/src
文件夹,并在index.html
:<link rel="manifest" href="/manifest.json">
中添加指向该文件的链接。通过在您的further reading.manifest.json
和index.html
服务工作者支持的An example。但我发现,要真正让Service Workers正常工作,还需要做更多的工作。更多信息请访问MDN.
<!-- un-comment this code to enable service worker
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('service-worker.js')
.then(() => console.log('service worker installed'))
.catch(err => console.error('Error', err));
}
</script>-->
然后运行ionic build
并将www
文件夹部署到web上,最好通过HTTPS提供服务。如果你从你的移动浏览器打开页面,你应该能够在安卓和iOS (iOS >Version11.3)上“添加到主屏”,并以PWA的形式运行应用程序。
请记住,您拥有的任何Cordova功能都将不起作用。此外,如果你使用的是lazy-loading,这将有助于提高应用程序的性能。
https://stackoverflow.com/questions/50775419
复制相似问题