摘要:如果檢測到文件變化,會重新構(gòu)建被改變的文件。另外,被改變的模塊被發(fā)送到,用來做熱替換。首先檢查,被更新的模塊能否指是否被跟蹤詢問實例是否有更新。如果有更新,實例會異步下載更新代碼,并通知已經(jīng)準備就緒。參考資料官方文檔官方同事的總結(jié)
Hot Module Replacement是webpack下實現(xiàn)熱刷新的模塊,由于webpack的坑爹文檔,看了很久才搞明白這東西怎么用。
Webapck的熱刷新用起來很爽,連續(xù)寫一個下午,一次刷新都不用,體驗棒棒噠。
實現(xiàn)熱刷新的主要是HOT MODULE REPLACEMENT(HMR)模塊
官方文檔很坑爹,反正我是看的懵懵懂懂的。官方wiki講的稍微好些,不過原理多一些
How does it works?Webpacks adds a small HMR runtime to the bundle, during the build process, that runs inside your app. When the build completes, Webpack does not exit but stays active, watching the source files for changes. If Webpack detects a source file change, it rebuilds only the changed module(s). Depending on the settings, Webpack will either send a signal to the HMR runtime, or the HMR runtime will poll webpack for changes. Either way, the changed module is sent to the HMR runtime which then tries to apply the hot update. First it checks whether the updated module can self-accept. If not, it checks those modules that have required the updated module. If these too do not accept the update, it bubbles up another level, to the modules that required the modules that required the changed module. This bubbling-up will continue until either the update is accepted, or the app entry point is reached, in which case the hot update fails. 在構(gòu)建時,webapck添加一個小的HMR實例到bundle內(nèi)部,當構(gòu)建完成后,webpack不再存在但保持監(jiān)控源文件。如果webpack檢測到文件變化,會重新構(gòu)建被改變的文件。根據(jù)設(shè)置,webpack要么發(fā)送一個信號給HMR實例,要么檢查webpack的變化。另外,被改變的模塊被發(fā)送到HMR runtime,用來做熱替換。首先檢查,被更新的模塊能否self-accept【指是否被HMR跟蹤】?From the app view
The app code asks the HMR runtime to check for updates. The HMR runtime downloads the updates (async) and tells the app code that an update is available. The app code asks the HMR runtime to apply updates. The HMR runtime applies the update (sync). The app code may or may not require user interaction in this process (you decide). app詢問HMR實例是否有更新。如果有更新,HMR實例會異步下載更新代碼,并通知app已經(jīng)準備就緒。app源碼請求HMR實例開始更新。HMR實例同步更新。app可以選擇是否和用戶交互。From the compiler(webpack) view
待續(xù)。。。
參考資料:
【1】官方文檔
【2】官方wiki
【3】同事的總結(jié)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79910.html
摘要:在過程中會利用簡稱中的兩個方法和。是通過請求最新的模塊代碼,然后將代碼返回給,會根據(jù)返回的新模塊代碼做進一步處理,可能是刷新頁面,也可能是對模塊進行熱更新。該方法返回的就是最新值對應(yīng)的代碼塊。 Hot Module Replacement(簡稱 HMR) 包含以下內(nèi)容: 熱更新圖 熱更新步驟講解 showImg(https://segmentfault.com/img/remote...
摘要:項目的架構(gòu)也是最近在各種探討研究。還求大神多指點項目技術(shù)總結(jié)技術(shù)棧項目結(jié)構(gòu)探究初體驗關(guān)于項目中的配置說明項目簡單說明開發(fā)這一套,我個人的理解是體現(xiàn)的是代碼分層職責分離的編程思想邏輯與視圖嚴格區(qū)分。前端依舊使用技術(shù)棧完成。 項目地址:https://github.com/Nealyang/R...技術(shù)棧:react、react-router4.x 、 react-redux 、 webp...
摘要:無論你是前端后端移動端開發(fā)人員,或是設(shè)計師產(chǎn)品經(jīng)理,都可以在平臺上發(fā)布項目,與志同道合的小伙伴一起協(xié)作完成項目。 全平臺全棧開源項目 coderiver 今天終于開始前后端聯(lián)調(diào)了~ 首先感謝大家的支持,coderiver 在 GitHub 上開源兩周,獲得了 54 個 Star,9 個 Fork,5 個 Watch。 這些鼓勵和認可也更加堅定了我繼續(xù)寫下去的決心~ 再次感謝各位大佬! ...
摘要:本項目是在之前一個項目基礎(chǔ)上,用技術(shù)棧重寫的一個書城項目版本地址本項目地址預(yù)覽地址項目說明本項目是一個構(gòu)建的移動書城項目,數(shù)據(jù)是通過爬蟲爬取,存儲在中,項目通過構(gòu)建,前端部分是技術(shù)棧。 本項目是在之前一個vue項目基礎(chǔ)上,用react技術(shù)棧重寫的一個書城項目 vue版本地址 本項目地址 預(yù)覽地址 項目說明 本項目是一個react + nodejs + mysql構(gòu)建的移動書城項目,...
摘要:的出現(xiàn)真可謂是前端界的福音,正與之宗旨所說,。據(jù)統(tǒng)計,目前世界上有的項目使用了。技術(shù)棧學習路線直到前段時間筆者的朋友給推薦了一個,真是欣喜若狂也更加堅定了自己在繼續(xù)前進的想法。這是一個外國友人總結(jié)的一套技術(shù)棧學習路線,先給傳送門。 我相信點進來的同學都是沖著標題來的,當然本文也不會讓各位失望。不過在正式介紹標題所述的內(nèi)容之前,我們不妨先放下技術(shù),一起回顧下自己做前端技術(shù)的心路歷程。 前...
閱讀 2169·2021-10-08 10:15
閱讀 1197·2019-08-30 15:52
閱讀 524·2019-08-30 12:54
閱讀 1542·2019-08-29 15:10
閱讀 2695·2019-08-29 12:44
閱讀 3017·2019-08-29 12:28
閱讀 3365·2019-08-27 10:57
閱讀 2224·2019-08-26 12:24