webpack中的热模块替换(Hot Module Replacement)--- HMR

344 阅读1分钟

webpack中的热模块替换(Hot Module Replacement)--- HMR

例如:当页面中有一个button按钮,点击新增列表,当我改变列表每一项的颜色时,Webpack就会帮你刷新浏览器,此时页面上的列表已经清空,那么怎么才能让它只替换颜色,而不刷新页面呢?

​ 1.找到webpack.config.js文件

//引入webpack插件
const webpack = require('webpack');

devServer:{
	open:true,
	port:8888,
    //开启webpack的Hot Module Replace
	hot:true,
    //即便是热模块替换没有生效,浏览器也不会自动刷新
    hotOnly:true,
},
......,
plugins:[
    newHtmlwebpackPlugin({
        template:'stc/index.html'
    }),
    new CleanWebpackPlugin(['dist']),
    //使用webpack的热模块替换插件
    new webpack.HotModuleReplacementPlugin()
]

​ 2.重新运行

这时候我们就可以看到,当我们改变页面的css时,页面并不会刷新。

例如:当我的页面上有两个引入的模块时,修改一个模块的内容,让仅修改过的那个模块发生改变,不要刷新页面,但是这时候我们就会发现,页面是没有刷新,但是模块也没有修改

​ 自己在js中配置一段代码

import counter from './counter';
import number from './number';

counter();
number();

//如果热模块开启,那么当文件发生变化时,重新调用执行
if(module.hot){
	module.hot.accept('./number',()=>{
		//获取到之前的元素,把它删除
		document.body.removeChild(document.getElementById('number'))
		number()
	})
}

为什么css修改时不需要自己写一个功能代码呢?

​ 这是因为css-loader已经帮你做好这个事情了,vue中也是同样帮你处理好了。

官方文档:webpack.js.org/guides/hot-…