Hot Module Replacement(如下簡稱 HMR)是 webpack 發展至今引入的最使人興奮的特性之一 ,當你對代碼進行修改並保存後,webpack 將對代碼從新打包,並將新的模塊發送到瀏覽器端,瀏覽器經過新的模塊替換老的模塊,這樣在不刷新瀏覽器的前提下就可以對應用進行更新。例如,在開發 Web 頁面過程當中,當你點擊按鈕,出現一個彈窗的時候,發現彈窗標題沒有對齊,這時候你修改 CSS 樣式,而後保存,在瀏覽器沒有刷新的前提下,標題樣式發生了改變。感受就像在 Chrome 的開發者工具中直接修改元素樣式同樣。前端
webpack-dev-server簡稱WDS,WDS啓動後會與瀏覽器創建websocket連接。當服務器資源變換並從新編譯後,會發送消息到瀏覽器端,若是沒有配置熱替換,則瀏覽器會刷新。vue
vue項目中,咱們只用在devServer中設置hot爲true來開啓熱替換便可,以後的vue-loader會幫咱們配置。那若是不是vue項目,如何手動配置熱替換呢
一、webpack配置項修改webpack
//... devServer:{ //... hot:true//啓動熱替換 }, //... plugins:[ //... new webpack.HotModuleReplacementPlugin()//加入熱替換插件 ]
二、打包文件內配置
在你須要啓動熱替換的位置添加以下代碼,好比你在入口文件index.js中添加熱替換,那麼每一個模塊變化都會觸發熱替換web
//index.js import {logToScreen} from './util.js' logToScreen() if(module.hot){ module.hot.decline()//當index.js自身變換時不觸發熱替換而是直接刷新頁面,根據狀況添加這項配置 module.hot.accept()//也能夠只監聽util.js的更新而觸發熱替換,那麼就這樣配置:module.hot.accept(['./util.js']) }