Webpack 原始碼(二) 如何閱讀原始碼

2021-09-17 19:20:10 字數 1478 閱讀 1682

如果想要了解 webpack 的流程,只要閱讀 @七珏 細說 webpack 之流程篇 所述的內容就夠了,講解地比較全面了;本文就不對 webpack 流程再做重複的描述,而是從另外乙個角度補充分析 webpack 原始碼;

webpack 中最為重要的無非是 compiler 、compilation 、module等物件,閱讀原始碼的過程其實可以認為是了解物件的方法和屬性的過程;通讀 webpack 這個大工程的原始碼,以乙個公司(company)來模擬,你會發現這幾個物件的關係大致如下:

這個模擬或許有些欠妥,但也大致能展現出這個核心功能模組的位置,有個大概了解即可;

在原始碼分析中,最基本的有兩點:

需要分析物件本身的屬性和方法

分析物件之間的關係(繼承、實現)等

和人的社交類似,前者回到某個人本身的屬性(性別、年齡等)和功能(琴棋書畫等技能),後者回答某人人的社會關係(兄弟、父子等關係);

以 compiler 例項為例,在 webstorm 中我們打乙個斷點,右鍵使用evalute expression...功能:

獲取該例項物件的屬性,直接使用object.getownpropertynames(obj)獲取:

使用object.getprototypeof(compiler)就能根據當前例項獲取其原型物件,主要是關注上面定義的方法:

同時進一步分析其繼承的物件,就能獲知 compiler 物件的繼承關係:

到這裡為止我們已經比較全面地掌握了 compiler 物件,對原始碼的進一步分析打下了基礎;比如在此基礎上,我們可以分析上一節所述的make事件階段過程:

以及loader載入過程:

正所謂四兩撥千斤,找對要分析的物件以及它的關係網,就找到了正確的分析原始碼的方法;

如何閱讀原始碼

帶著問題閱讀 要解決什麼問題 是如何實現的?背景調查 看官網介紹 維基百科,了解主要功能,被應用於哪些專案以及基本的使用,掌握這些基本資訊 使用框架 至少follow get started 做個小demo 真的有人連api都沒呼叫過,上來就看 盡可能編譯除錯。能除錯的 幾乎沒有看不懂的 了解一些設...

如何閱讀原始碼

我剛開始閱讀原始碼就是盲目的去讀,不知到問什麼要讀,讀那部分,甚至準備把所有的原始碼類從上到下依次讀一遍,但是其實這樣是錯的,導致我從第乙個類開始就不知道當前這類的作用,乙個星期也沒什麼進展 其實正確閱讀原始碼的姿勢應該是首先得有疑問,比如spring框架,很長一段時間我都聽說spring的ioc是...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...