webpack学习笔记-webpack优化代码运行性能-PWA

85 阅读1分钟

PWA 渐进式网络应用程序

开发Web App 项目,项目一旦处于离线状态,就没有办法访问了,我们希望给项目提供离线体验

渐进式网络应用程序(progressive web application)简称PWA,是一种可以提供类似于 native app(原生应用程序)体验的web app的技术。其中最重要的是,在离线(offline)时应用程序能够继续运行功能。

内部通过 Service Workers 技术实现的。

让我们配置看看怎么使用PWA

  • 下载插件
npm install workbox-webpack-plugin --save-dev
  • webpack.config.js
const WorkboxPlugin = require('workbox-webpack-plugin')

module.exports = {
  ...
  plugins:[
    new WorkboxPlugin({
      // 这些选项帮助快速启用 ServiceWorkers
      // 不允许遗留任何“旧的” ServiceWorkers
      clientsClaim: true,
      skipWaiting: true,
    })
  ]
}

完成这些设置后运行 npm run build , 看一下会发生什么:

dist 文件下生成了两个额外的文件:service-worker.js和workbox-460519b3.js。我们现在已经创建出一个 Service Worker

  • 注册 Service Worker

在main.js中

 if ('serviceWorker' in navigator) {
   window.addEventListener('load', () => {
     navigator.serviceWorker.register('/service-worker.js').then(registration => {
       console.log('SW registered: ', registration);
     }).catch(registrationError => {
       console.log('SW registration failed: ', registrationError);
     });
   });
 }

再次运行 npm run build 来构建包含注册代码版本的应用程序。现在来进行测试。停止 server 并刷新页面。如果浏览器能够支持 Service Worker,应该可以看到你的应用程序还在正常运行。然而,server 已经停止 serve 整个 dist 文件夹,此刻是 Service Worker 在进行 serve。