HMR 熱重載 module.hot.accept回調(diào)不調(diào)用的原因。

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ì)瀏覽器的通知證明上面的說法:

  1. example.js沒有被引入項(xiàng)目,更新example.js,可以看到HMR通知瀏覽器的hot-update.json中,沒有指定要更新的chunk

    image.png

  2. 把example引入項(xiàng)目中,更新example.js,可以看到HMR通知瀏覽器的hot-update.json中,指出了是chunk-vendors這個(gè)module的變更,于是觸發(fā)熱重載,并觸發(fā)module.hot.accept的回調(diào)。

    image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容