module.hot.accept(['../example.js'], function () {
console.log('hot');
});
如果你使用了module.hot.accept
,发现监听的example.js变化后,虽然会执行热重载,但是回调却没有调用。有可能是因为监听的文件没有被使用到。只有把要监听的文件引入项目中,HMR才能知道是哪个module
被改动,从而更新对应的module
。
如果文件没被引入项目里面,那么example.js就不会被打包进module,那么何来module hot replacement呢[doge]。
我们可以通过两种情况下HMR对浏览器的通知证明上面的说法:
-
example.js没有被引入项目,更新example.js,可以看到HMR通知浏览器的hot-update.json中,没有指定要更新的
chunk
:
-
把example引入项目中,更新example.js,可以看到HMR通知浏览器的hot-update.json中,指出了是chunk-vendors这个module的变更,于是触发热重载,并触发
module.hot.accept
的回调。