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目录下所有资源作为静态资源暴露出去
分类:
webpack
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2019-04-28 HTML 转 PDF的两种实现方式