module.hot.accept(['../example.js'], function () {
console.log('hot');
});
如果你使用了module.hot.accept,發(fā)現(xiàn)監(jiān)聽的example.js變化后,雖然會(huì)執(zhí)行熱重載,但是回調(diào)卻沒有調(diào)用。有可能是因?yàn)楸O(jiān)聽的文件沒有被使用到。只有把要監(jiān)聽的文件引入項(xiàng)目中,HMR才能知道是哪個(gè)module被改動(dòng),從而更新對(duì)應(yīng)的module。
如果文件沒被引入項(xiàng)目里面,那么example.js就不會(huì)被打包進(jìn)module,那么何來module hot replacement呢[doge]。
我們可以通過兩種情況下HMR對(duì)瀏覽器的通知證明上面的說法:
-
example.js沒有被引入項(xiàng)目,更新example.js,可以看到HMR通知瀏覽器的hot-update.json中,沒有指定要更新的
chunk:
image.png -
把example引入項(xiàng)目中,更新example.js,可以看到HMR通知瀏覽器的hot-update.json中,指出了是chunk-vendors這個(gè)module的變更,于是觸發(fā)熱重載,并觸發(fā)
module.hot.accept的回調(diào)。
image.png

