webpack-dev-middleware 与 webpack-hot-middlware
dev-middleware: live reload的实现:
思考一下我們要如何更新(live reload)呢? 當然是需要取得 webpack 編好的資料啊,於是就需要在從 request
到 response
的過程中透過 express 的 middleware 取得資料,而方法就是透過 webpack-dev-middleware 。
比起直接編譯成檔案,webpack-dev-middleware 這個套件還多了一些好處:
-
不需要一直寫入磁碟,所有產生的結果會直接存在記憶體
-
在監視模式(watch mode)下如果檔案發生異動,middleware 會馬上停止提供舊版的 bundle 並且會延遲請求的回應直到編譯完成,如此一來我們就不需要去
觀察編譯是否結束了
hot-middlware:
热替换(Hot Module Replacement/Hot Reloading
) ,实现浏览器刷新功能
This module is only concerned with the mechanisms to connect a browser client to a webpack server & receive updates. It will subscribe to changes from the server and execute those changes using webpack's HMR API. Actually making your application capable of using hot reloading to make seamless changes is out of scope, and usually handled by another library.
(原理基于 EventStream 轮询机制,浏览器周期性询问服务器获取消息)