這篇文章主要介紹下筆者看源碼的一些心得和方式,因爲筆者看的大部分是前端項目,固然也看過一些其它領域的源碼,不過很少,因此內容主要仍是之前端項目爲主前端
作完前面的準備工做後,這時候你應該對這個項目有一個大體的瞭解,這裏你能夠先簡單寫寫你對這個項目的一些疑惑,請注意!!!這裏的問題很重要,由於看源碼必需要帶着問題去看,否則你會摸不到方向。至於這裏的問題,你能夠先列個清單,好比mpvuevue
接着我能夠開始正式的看源碼了,這裏容我說句題外話。有人可能喜歡先從第一個commit看起,由於第一個commit的源碼會比較簡單易懂,可是我並不喜歡這樣,由於第一個commit的代碼每每跟現有的文檔差距比較大(除非這個項目比較新),沒法瞭解到總體的結構,並且第一個commit的代碼可能跟最新的代碼在架構上面有着翻天覆地的變化,反而作了一些無用功。webpack
1.入口文件,幾乎全部的項目都會有一個入口文件,其實你作上面的準備工做以後,基本你都能找到入口文件,無非就是從2個方面入手git
2.以模塊爲單元開始閱讀,帶着你上面準備的問題,抽絲剝繭、層層深刻。這裏分享一個小技巧,能夠先Fork下一個項目,在閱讀的過程當中不斷加上本身的註釋和理解,一個好的項目每每在結構上面都是很清晰,例如github
好的源碼是能夠從命名上面都能直接給讀者一些信息,方便閱讀。web
3.當你深刻讀到某一塊源碼不理解,先試着在網上找找有沒有相關的資料學習下,實在找不到能夠先標記下放着,等你看到後面再回過頭來看不理解的地方或者會茅塞頓開。chrome
1.在你閱讀的過程當中,若是發現一些代碼片斷很精妙的能夠記錄一下,或者嘗試下有沒有更好的方式去實現,也許你就成了這個項目contributors了typescript
2.當你不瞭解某個模塊的做用時,你能夠去看看測試用例,特別是單元測試(unit),測試用例包含對輸入輸出的校驗,從這裏能夠快速瞭解到模塊相關的做用npm
3.要學會給項目打斷點,在邊讀邊運行項目源碼的過程當中,經過斷點輸出當前執行的堆棧信息對你理解項目也是有很大的幫助json
初學者在github上面閱讀源碼的時候能夠先從一些小的項目入手,好比實現了某個功能或者組件這樣的項目,先不要看一些大而全的框架,比較容易上手,當你積累了必定的經驗後再嘗試下看框架的源碼。 另外搭配一些工具來閱讀或者會更好,筆者推薦一些工具給你們
學習項目源碼不是一蹴而就,每每週期比較長,最好的就是可以將項目Fork下來,單獨準備好一份筆記,慢慢去研究、記錄看源碼過程當中的一些心得,到最後看完再回過頭來你能說出它的架構和設計,那麼我以爲這個學習是有意義,因此我認爲閱讀源碼的終究目標是瞭解項目,最終能實現它