這一節繼續深入Router模塊,首先從最常用的use開始。 router.use 方法源碼如下: 前半部分十分熟悉,根本就是app.use的翻版。 當然,最后遍歷中間件函數處理的時候就不一樣了,引入了新的本地模塊Layer。 Layer ...
validateSchema模塊 首先來看錯誤檢測: 可以注意到,這里傳了兩個參數,其實第一個參數來源於一個JSON文件: 這個JSON文件非常大,可以觀察一下部分內容: 從描述可以猜測,這里的key對應options中的key,value就是檢測方式。 比如說entry放到required代表是必須的,plugins的type為array代表這個鍵必須是一個數組,而 ref代表一個路徑映射,即 ...
2017-12-13 19:22 0 2431 推薦指數:
這一節繼續深入Router模塊,首先從最常用的use開始。 router.use 方法源碼如下: 前半部分十分熟悉,根本就是app.use的翻版。 當然,最后遍歷中間件函數處理的時候就不一樣了,引入了新的本地模塊Layer。 Layer ...
解決掉了最頭疼的DirectoryWatcher內部實現,這一節可以結束NodeWatchFileSystem模塊。 關於watch的應用場景,仔細思考了下,這不就是熱重載的核心嘛。 首先是監視文件,觸發文件change事件后收集變動文件信息,重新進行打包,更新JS后觸發頁面重新 ...
上一節看了一眼預編譯的總體代碼,這一節分析convert-argv模塊。 這個模塊主要是對命令參數的解析,也是yargs框架的核心用處。 生成默認配置文件名數組 函數內部,首先判斷了argv.d與argv.p屬性是否存在,這個屬性來源於參數d與p ...
在cachedInput、output、watch三大文件系統中,output非常簡單,沒有必要講,其余兩個模塊依賴於input模塊,而input主要是引用了graceful-fs的部分API,所以這節來講講graceful-fs。 上一節整理的源碼如下: 內容包含 ...
此系列隨時可能斷更,畢竟我是解釋型源碼分析…… tips:本系列源碼版本為3.10.0 嘗試看過Spring的源碼,有點燒腦,所以還是重回JS吧! 在配置完環境變量后,可以通過webpack指令進行打包,需要知道的是,如果當前路徑存在webpack ...
總體過了一下后面的流程,發現Compiler模塊確實不適合單獨講解,這里繼續講解后面的代碼: 這行代碼與之前設置options默認值非常相似,但是復雜程度根本不是一個次元的。 這一節只能簡單的看一眼內部到底有多少東西,整理后源碼如下: 這個模塊 ...
寫在前面: 本來一開始想沿用之前vue源碼的標題:webpack源碼之***,但是這個工具比較巨大,所以為防止有人覺得我裝逼跑來噴我(或者隨時鴿),加上淺析二字,以示慫。 既然是淺析,那么案例就不必太復雜,所以繼續按照之前vue源碼,以最簡單形式進行源碼分析,如下: 配置文件 ...
Tapable工具 完成webpack默認參數注入后,下一步雖然是 new Compiler() ,但是這東西不是一下可以講完的,復雜的一批。 不如先從工具入手,分塊講解compiler,首先來看看事件流執行器Tapable工具。 tips:這里的Tapable源碼來自於 ...