閱讀前端專案原始碼的正確姿勢

2021-09-27 09:55:34 字數 1884 閱讀 6355

這篇文章主要介紹下筆者看原始碼的一些心得和方式,由於筆者看的大部分是前端專案,當然也看過一些其它領域的原始碼,不過不多,所以內容主要還是以前端專案為主

在準備看乙個開源專案原始碼的時候先去熟悉下這個專案的背景功能以及相應的api。這步為了理解整個專案的功能做準備,也是為了後面重點看哪些模組做準備

檢視專案的readme.md檔案。有些專案會在將設計文件和架構圖放到md檔案上,這樣會讓你巨集觀上對一些概念有些認識。例如immer

檢視專案整體的檔案結構。比如下面提到一些重點需要檢視的檔案

知道一些預設命名的檔案規則,比如

static,靜態檔案,前端專案一般都會用來作為給瀏覽器執行的入口檔案

test,測試用例資料夾

... 這期間哪怕你遇到一些檔案你不知道有什麼用,有2個方式可以了解到

做完前面的準備工作後,這時候你應該對這個專案有乙個大致的了解,這裡你可以先簡單寫寫你對這個專案的一些疑惑,請注意!!!這裡的問題很重要,因為看原始碼必須要帶著問題去看,不然你會摸不到方向。至於這裡的問題,你可以先列個清單,比如mpvue

接著我可以開始正式的看原始碼了,這裡容我說句題外話。有人可能喜歡先從第乙個commit看起,因為第乙個commit的原始碼會比較簡單易懂,但是我並不喜歡這樣,因為第乙個commit的**往往跟現有的文件差距比較大(除非這個專案比較新),無法了解到整體的結構,而且第乙個commit的**可能跟最新的**在架構上面有著翻天覆地的變化,反而做了一些無用功。

1.入口檔案,幾乎所有的專案都會有乙個入口檔案,其實你做上面的準備工作之後,基本你都能找到入口檔案,無非就是從2個方面入手

工具的配置檔案,比如webpack的entry欄位,gulp.src執行的檔案路徑等等

2.以模組為單元開始閱讀,帶著你上面準備的問題,抽絲剝繭、層層深入。這裡分享乙個小技巧,可以先fork下乙個專案,在閱讀的過程中不斷加上自己的注釋和理解,乙個好的專案往往在結構上面都是很清晰,例如

好的原始碼是可以從命名上面都能直接給讀者一些資訊,方便閱讀。

3.當你深入讀到某一塊原始碼不理解,先試著在網上找找有沒有相關的資料學習下,實在找不到可以先標記下放著,等你看到後面再回過頭來看不理解的地方或者會茅塞頓開。

1.在你閱讀的過程中,如果發現一些**片段很精妙的可以記錄一下,或者嘗試下有沒有更好的方式去實現,也許你就成了這個專案contributors了

2.當你不了解某個模組的作用時,你可以去看看測試用例,特別是單元測試(unit),測試用例包含對輸入輸出的校驗,從這裡可以快速了解到模組相關的作用

3.要學會給專案打斷點,在邊讀邊執行專案原始碼的過程中,通過斷點輸出當前執行的堆疊資訊對你理解專案也是有很大的幫助

初學者在github上面閱讀原始碼的時候可以先從一些小的專案入手,比如實現了某個功能或者元件這樣的專案,先不要看一些大而全的框架,比較容易上手,當你積累了一定的經驗後再嘗試下看框架的原始碼。 另外搭配一些工具來閱讀或者會更好,筆者推薦一些工具給大家

學習專案原始碼不是一蹴而就,往往週期比較長,最好的就是能夠將專案fork下來,單獨準備好乙份筆記,慢慢去研究、記錄看原始碼過程中的一些心得,到最後看完再回過頭來你能說出它的架構和設計,那麼我覺得這個學習是有意義,所以我認為閱讀原始碼的終究目標是了解專案,最終能實現它

前端rem單位的正確使用姿勢

原文 主題html 寫這篇文章是因為自己被rem這個坑絆過腳,因此特意去研究了下rem這個單位。簡單闡述下px em rem之前的關係 其實網上很多,我這裡稍微提一下 先丟擲乙個問題 為什麼要選擇rem?px 畫素是相對於顯示器螢幕解析度而言的相對長度單位。pc端使用px倒也無所謂,可是在移動端,因...

UWP 漲姿勢UWP原始碼 極簡的RSS閱讀器

原文 uwp 漲姿勢uwp原始碼 極簡的rss閱讀器 該專案 可能會引起部分人群的不適,敏感人群請在父母陪同下閱讀。工程檔案備註 zhangzishirssread rssreader.cs 負責rss內容的讀取和解析 filestorehelper.cs 將rss內容儲存成本地xml檔案,以及讀取...

建議的開源專案原始碼閱讀習慣

開源專案已閱讀了不少,總結下來按照下面的steps來操作比較恰當 1 閱讀features。以此來搞清楚該專案有哪些特性 2 思考。想想如果自己來做有這些features的專案該如何構架 5 如果有介紹專案架構的文件,通過它了解專案的總體架構,如果沒有,通過api doc了解原始碼包的結構 6 分兩...