chapter├─babel.config.js├─package-lock.json├─package.json├─postcss.config.js├─src| ├─index.html| └index.js├─build| ├─webpack.common.js| ├─webpack.dev.js| └webpack.prod.js
为了模拟线上的服务器运行环境,我们先来安装一个http-server。
安装:
$ npm install http-server -D
配置一个脚本命令start:
"scripts": {"dev": "webpack serve --config ./build/webpack.common.js","build": "webpack --env production --config ./build/webpack.common.js","start": "http-server dist"},
编写一段代码:
console.log("Hello Word!");
这个时候npm run start编译后控制台就会给我们一个本地服务器的地址,我打开这个地址项目就能看到console.log了一个字符串。
接着我们把start的服务终止掉,然后刷新页面就无法继续访问页面了。
我们可以利用workbox-webpack-plugin(PWA)来设置项目的缓存,即使服务器停止不能使用了,项目页依然可以运行。
安装:
$ npm install workbox-webpack-plugin -D
配置workbox-webpack-plugin:
// ...const { GenerateSW } = require("workbox-webpack-plugin")module.exports = {plugins: [new GenerateSW({clientsClaim: true,skipWaiting: true})]}
新增一段代码:
console.log("Hello Word!");// 如果浏览器支持 serviceWorkerif ("serviceWorker" in navigator) {window.addEventListener("load", () => {navigator.serviceWorker.register("/service-worker.js").then(registration => {console.log("service-worker registed")}).catch(error => {console.log("service-worker register error")})})}
等配置好Webpack配置文件后重新运行 npm run build生成新的业务代码,再运行npm run start启动服务器,这个时候就能看到页面输出了 service-worker registed
随后我们接着终止start服务然后刷新页面发现页面依然能输出Hello Word。
