离子3发布应用程序作为PWA(Progressive Web App)

Adi*_*ari 9 ionic-framework ionic2 progressive-web-apps ionic3

我想发布我的应用程序作为PWA,所以我做的是

将此脚本插入index.html

<!--script>
    if ('serviceWorker' in navigator) {
      navigator.serviceWorker.register('service-worker.js')
        .then(() => console.log('service worker installed'))
        .catch(err => console.log('Error', err));
    }
</script-->
Run Code Online (Sandbox Code Playgroud)

然后安装

npm run ionic:build --prod 
Run Code Online (Sandbox Code Playgroud)

看起来它部署它但我的问题是:

  1. 我需要将哪些文件上传到主机以将应用程序发布为PWA?
  2. 为什么当我在应用程序中更改某些内容并运行离子服务时没有任何更改,它只在WWW文件夹的index.html中更改?为什么?(因为现在是PWA?)

  3. 当我打开www文件夹并运行打开index.html时,我按下打开警告对话框的按钮它不会打开它.为什么?

  4. 当我运行命令?只是在发展的最后?

Pab*_*ejo 17

跑

ionic cordova platform add browser

ionic build browser --prod --release

然后转到[project_folder]/platforms/browser/www并复制http服务器上的内容.


Ror*_*ory 10

请勿使用Cordova打扰PWA.只需使用npm run build --prod并上传/www文件夹即可.

PWA更多的是概念集合,因此它不仅仅是"开启"或"关闭".至少你可能想要添加一个清单文件,这样你就可以通过隐藏浏览器框架,设置你的图标,应用程序名称等来使它更像"app like".取消注释添加服务工作者的行并不会让它变得神奇PWA,如果您没有向服务工作者提供任何"有用"(您可能需要或可能不需要这样做,具体取决于您的应用程序的工作方式).另请注意,您需要使用HTTPS才能使用服务工作者.

您还需要手动删除index.html中包含cordova.js的行(如果您只是上传/ www,则会出现404错误).

  • 那是正确的.我没有看到太多在浏览器中"很好"工作,所以通常会在我的代码中检查平台并隐藏某些按钮等.本机特定代码的其余部分已经检查可用性但是当然是取决于你的您可能需要使用cordova浏览器的应用程序类型,但我认为这是"可以"充当PWA的应用程序的例外. (2认同)
  • @Rodney决定主要归结为使用cordova(平台浏览器)或不使用(www文件夹).如果你只是针对一个PWA,那么你真的没有什么需要来自cordova,因为大多数插件浏览器包装器只会给你一小部分你在手机上获得的功能,所以你会喜欢不想将它们用于网络应用程序. (2认同)