webpack 之(20) 优化配置 之 PWA

PWA:渐进式网络开发应用程序(离线可访问)

  workbox  ---> workbox-webpack-plugin

操作步骤

第一步:

npm i workbox-webpack-plugin

 

第二步:在webpack.config.js中使用

复制代码
const WorkboxWebpackPlugin = require('workbox-webpack-plugin')

module.exports = {
  plugins:[

     new WorkboxWebpackPlugin.GenerateSW({
       //1.帮助serviceworker快速启动
       //2.删除旧的serviceworker
       
       //生成一个 serviceworker 配置文件
        clientsClaim:true,
        skipWaiting:true
     })
  ]

}    
复制代码

 

第三步: 在index.js(入口文件)

分析:判断'serviceworker' 是否在navigator全局变量中,当load全局加载完之后,就去注册构建好的'service-worker.js'

复制代码
//注册serviceWorker

//处理兼容性问题
if('serviceWorker' in navigator)
{
  window.addEventListener('load',() => {
      navigator.serviceWorker.register('/service-worker.js')
        .then(()=>{
            console.log('sw注册成功了~')
         }).catch(()=>{
            console.log('sw注册失败了')
         })
  })
}
复制代码

 

第四步: 会有一点小问题

分析:

1/但是eslint 不认识 window, navigator全局变量

 解决:需要修改package.json中eslintConfig配置

"env":{
  "browser":true  //支持浏览器全局变量
}

2/ sw代码必须运行在服务器上

    --> nodejs

    -->npm i serve -g

   server -s build 启动服务器,将build目录下所有资源作为静态资源暴露出去

 

posted @   zmztyas  阅读(83)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2019-04-28 HTML 转 PDF的两种实现方式
点击右上角即可分享
微信分享提示