多页面应用
entry
entry可以配置为字符串、数组、对象(可以分开打包)
上图,app2.js和app.js会打包到一个文件main.js中;lodash会被打包到lodash.js。
如果app2.js和app.js使用了lodash,为之增加依赖,lodash单独打包,app3也依赖lodash并单独打包:
使用htmlwebpackplugin可以实现模板的自定义:
index.html为模板,在index.html中可以获取,inject为生成scripts等引入标签放在<body>位置,chunks为打包的文件:
不同页面不同打包:
指定打包文件位置:
Tree shaking
用于描述移除未引用的代码(死代码),内部方法如果没有使用则不打包,第三方库引入就会打包
sideEffects
true:所有代码都有副作用,不要随意删除(默认)
false:可以删除;
数组:存放有副作用的:下图即css文件有副作用。
渐进式网络应用程序PWA
非离线环境下运行
重新启动服务时,在dist生成新代码:
添加workbox
npm i workbox-webpack-plugin -D:
clientsClaim快速启用service-worker
skipWaiting跳出等待,不允许留下任何旧的service-worker
注册service worker
实现离线浏览页面的功能(浏览器将页面缓存了)
判断一下是否注册成功