多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 缓存 想象一下这个场景~ 我们网站上线了,用户第一次访问首页,下载了`home.js`,第二次访问又下载了`home.js`~ 这肯定不行呀,所以我们一般都会做一个缓存,用户下载一次`home.js`后,第二次就不下载了。 有一天,我们更新了`home.js`,但是用户不知道呀,用户还是使用本地旧的`home.js`。出问题了~ 怎么解决?每次代码更新后,打包生成的名字不一样。比如第一次叫`home.a.js`,第二次叫`home.b.js`。 文档看[这里](https://doc.webpack-china.org/guides/caching) 我们照着文档来 `webpack.dev.config.js` ~~~ output: { path: path.join(__dirname, './dist'), filename: '[name].[hash].js', chunkFilename: '[name].[chunkhash].js' } ~~~ 这样每次打包都会自动加上`hash`~ 现在我们试试,是不是修改了文件,打包后相应的文件名字就变啦?~ ![](https://box.kancloud.cn/c7a190874de86cc8059dc6cf84296b78_1031x251.png) 但是你会发现问题又来了,报错了,因为我们的`dist/index.html`里面引用的`js`文件都是写死的,怎么样才能把它配置成动态生成的`js`文件名呢? ## HtmlWebpackPlugin 这个插件,每次会自动把`js`插入到你的模板`index.html`里面去。 `npm install html-webpack-plugin --save-dev` 删掉`index.html`里面写死的路径和文件名并把文件复制到`src`目录里面,并修改`webpack.dev.config.js`,增加`plugin` ~~~ const HtmlWebpackPlugin = require('html-webpack-plugin') // 定义webpack插件 plugins: [ new HtmlWebpackPlugin({ filename: 'index.html', template: path.join(__dirname, 'src/index.html') }) ] ~~~ 这样就可以了。。。休息一下欣赏下自己做的东西~~~ 说明一下:`npm start`打包后的文件存在内存中,你看不到的~ 你可以把遗留`dist/index.html`删除掉了。