摘要:正所謂四兩撥千斤,找對(duì)要分析的對(duì)象以及它的關(guān)系網(wǎng),就找到了正確的分析源碼的方法下面的是我的公眾號(hào)二維碼圖片,歡迎關(guān)注。
1、如何調(diào)試閱讀源碼
如果想要了解 Webpack 的流程,只要閱讀 @七玨 細(xì)說(shuō) webpack 之流程篇 所述的內(nèi)容就夠了,講解地比較全面了;本文就不對(duì) Webpack 流程再做重復(fù)的描述,而是從另外一個(gè)角度補(bǔ)充分析 Webpack 源碼;
Webpack 中最為重要的無(wú)非是 Compiler 、Compilation 、Module等對(duì)象,閱讀源碼的過(guò)程其實(shí)可以認(rèn)為是 了解對(duì)象的方法和屬性的過(guò)程;通讀 Webpack 這個(gè)大工程的源碼,以一個(gè)公司(Company)來(lái)類比,你會(huì)發(fā)現(xiàn)這幾個(gè)對(duì)象的關(guān)系大致如下:
Webpack 就是一個(gè)大公司
Compiler 就像公司的董事會(huì),只把握公司大方向的走向,不關(guān)心細(xì)節(jié)實(shí)現(xiàn)
Compilation 就像是 CEO,由董事會(huì)任命,主要操心整個(gè)公司運(yùn)行,調(diào)度各個(gè)部門運(yùn)作
ModuleFactory 就像各個(gè)部門了,從事打造各種產(chǎn)品細(xì)節(jié)
最終輸出的 bundle 就像是具體的產(chǎn)品
這個(gè)類比或許有些欠妥,但也大致能展現(xiàn)出這個(gè)核心功能模塊的位置,有個(gè)大概了解即可;
2、分析對(duì)象屬性和方法在源碼分析中,最基本的有兩點(diǎn):
需要分析對(duì)象本身的屬性和方法
分析對(duì)象之間的關(guān)系(繼承、實(shí)現(xiàn))等
和人的社交類似,前者回到某個(gè)人本身的屬性(性別、年齡等)和功能(琴棋書畫等技能),后者回答某人人的社會(huì)關(guān)系(兄弟、父子等關(guān)系);
以 Compiler 實(shí)例為例,在 Webstorm 中我們打一個(gè)斷點(diǎn),右鍵使用 Evalute Expression... 功能:
獲取該實(shí)例對(duì)象的屬性,直接使用 Object.getOwnPropertyNames(obj) 獲取:
使用Object.getPrototypeOf(compiler) 就能根據(jù)當(dāng)前實(shí)例獲取其原型對(duì)象,主要是關(guān)注上面定義的方法:
同時(shí)進(jìn)一步分析其繼承的對(duì)象,就能獲知 Compiler 對(duì)象的繼承關(guān)系:
到這里為止我們已經(jīng)比較全面地掌握了 Compiler 對(duì)象,對(duì)源碼的進(jìn)一步分析打下了基礎(chǔ);比如在此基礎(chǔ)上,我們可以分析上一節(jié)所述的 make事件階段 過(guò)程:
以及 loader 加載過(guò)程:
等等其他你想了解的內(nèi)容,都可以基于上面的功能分析出來(lái),這里就不一一列舉了。
正所謂四兩撥千斤,找對(duì)要分析的 對(duì)象 以及 它的關(guān)系網(wǎng) ,就找到了正確的分析源碼的方法;
下面的是我的公眾號(hào)二維碼圖片,歡迎關(guān)注。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/81147.html
摘要:哪吒別人的看法都是狗屁,你是誰(shuí)只有你自己說(shuō)了才算,這是爹教我的道理。哪吒去他個(gè)鳥命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰(shuí)和你做朋友太乙真人人是否能夠改變命運(yùn),我不曉得。我只曉得,不認(rèn)命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...
摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
摘要:所以這是一篇插隊(duì)的文章,用于去理解中的裝飾器和概念。因此,該的作用就是根據(jù)入?yún)⒎祷鼐唧w的描述符。其次局部來(lái)看,裝飾器具體應(yīng)用表達(dá)式是,其函數(shù)簽名和是一模一樣。等裝飾器語(yǔ)法,是和直接使用是等效等價(jià)的。 ================前言=================== 初衷:以系列故事的方式展現(xiàn) MobX 源碼邏輯,盡可能以易懂的方式講解源碼; 本系列文章: 《【用故事解...
閱讀 2958·2021-11-24 09:39
閱讀 2869·2021-09-29 09:34
閱讀 3561·2021-09-24 10:23
閱讀 1746·2021-09-22 15:41
閱讀 1701·2019-08-30 15:55
閱讀 3516·2019-08-30 13:58
閱讀 2624·2019-08-30 13:11
閱讀 1669·2019-08-29 12:31