离子PWA与传统离子分离吗?

Her*_*ini 4 ionic-framework ionic3 angular

这似乎是一个简单但令人困惑的问题。我已经与Ionic 1合作了很长时间,两年前才被介绍给Ionic 2+,但是有一段时间没有使用它了。

最近,我注意到Ionic已发布Ionic PWA,但我不知道它们是同一项目的一部分还是完全独立的。我知道Ionic PWA是一个Web应用程序框架,而传统的Ionic仅用于/推荐用于混合应用程序。

所以我的问题是:

  1. 它们是合并在一起还是分开?
  2. 如果它们是分开的,是否可以轻松地从Ionic3迁移到Ionic PWA?(我可能需要更多的浏览器支持)

    谢谢!

更新 这个问题是基于错误的假设提出的,即Ionic PWA是与原始Ionic分离的但相似的框架。显然,Ionic PWA只是原始Ionic的术语,需要进行一些细微的更改(您必须自己做)才能使其成为PWA。

Ale*_*erg 5

PWA与混合应用程序的不同之处在于,它们在Web浏览器而不是OS级别的WebView(在AndroidiOS的 WebViews上)中运行。PWA就像是一个网页,具有自己的应用程序图标,并在没有标签和URL栏等的全屏Web浏览器中运行。

因此,PWA与混合应用程序对本地功能的访问权限不同。例如,如果您想在混合应用程序中访问手机的摄像头,则可以使用Cordova插件之类的东西(在Ionic应用程序中,您可以使用@ ionic-native / camera)。要从PWA(本质上是从Web浏览器)访问摄像机,Cordova将无法工作-您需要使用Web API(请参阅Web API可以做什么!)。

由于PWA的体系结构需要与常规混合应用程序的体系结构完全不同(并且应用程序越复杂,差异越大),因此Ionic分支了Ionic PWA,以帮助开发人员更轻松地创建PWA。

要使Ionic3应用程序作为PWA运行:如果使用的Ionic入门应用程序模板之一创建了Ionic应用程序ionic start,则可以做两件事以使应用程序作为PWA运行。

  1. manifest.json文件添加到您的/src文件夹,并在您的index.html:中添加指向该文件的链接<link rel="manifest" href="/manifest.json">一个例子一的manifest.json进一步阅读

  2. 在您的服务中找到以下代码段index.html并取消注释,以启用Service Worker支持。我发现,要使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>-->
Run Code Online (Sandbox Code Playgroud)

然后运行文件夹ionic build并将其部署www到Web,最好通过HTTPS进行服务。如果您通过移动浏览器打开页面,则应该能够同时在Android和iOS(iOS> 11.3版)上“添加到主屏幕”,并将该应用程序作为PWA运行。

请记住,您拥有的任何Cordova功能都将无法使用。另外,如果您使用的是延迟加载,这将有助于提高应用程序的性能。