天天看點

為什麼要學習源碼,怎麼學習?

本文作為Vue3源碼系列的開篇詞,以問答形式來诠釋程式員為什麼要學習源碼

為什麼要學習源碼,怎麼學習?

1. 為什麼要學習源碼

閱讀優秀的代碼的目的是讓我們能夠寫出優秀的代碼

寫代碼其實就跟我們寫作文一樣,你看的高分作文越多,寫出高分作文的機率就越大

大部分程式員都隻會寫代碼(改,抄,​

​stackoverflow​

​工程師,代名詞: 搬磚),會閱讀代碼的很少,為什麼呢?因為國内大部分的IT教育,網課,教育訓練都沒有教你怎麼去看代碼,隻教你怎麼去寫代碼

再者基于現在的程式員工作模式(子產品化開發,隻需要拿到需求做自己的部分),别說看源碼,甚至就連項目裡的代碼都懶的去看,我認識的很多程式員就是這樣的,一個項目摸了兩三年,你要問他項目中​

​webpack​

​都幹了哪些事情,他的回答是不知道,反而趾高氣揚的告訴你,那些他從來都用不上,看了也沒什麼用,也看不懂,這裡省略内心千字髒文

閱讀代碼其實就咱們跟閱讀一本小說一樣,看過玄幻小說才能說出來修仙,看過都市的才能講出來穿越

閱讀主要目的是為了幫助我們積累素材,不要書到用時方恨少,看到美女我們應該能有一萬種詞語去形容,如氣若幽蘭,美豔不可方物,世間尤物,而不是簡短的幾個字,我艹,美女!

  • 那麼為什麼非要看源碼呢?

前面有提到優秀的高分作文看多了你才能寫出來高分作文,你天天看着0分作文,那麼寫出來的大機率也自然是0分作文,什麼樣的作文算是高分呢?這個很好區分,前期從衆就好

不給自己設限,不要讓你周圍人的技術上限成為你的上限

很多時候,人會潛意識給自己設限

井底之蛙是大家應該都熟悉的故事,大多數時候我們會給自己畫一個圈,将同僚的技術跟自己的技術做對比,或者将​

​TL​

​​的技術跟自己做對比,經常有人向我吐槽說,同僚的技術不如他為什麼工資比他高,​

​TL​

​​的技術也不怎麼樣,為什麼能成為​

​TL​

​,現在給你的回答是,"因為你以為的并不是你以為的"

我們完全沒有必要把時間花費在這種毫無意義的事情上面,改變不了環境就改變自己,學會破圈,為什麼總有人說北上廣深适合創業,因為北上廣深的風水爆炸還是空氣新鮮?顯然都不是,在北上廣深無非就是讓你的人脈更優質一些,上限更高一點,你的圈有多大,未來的想象空間才有可能更大

  • 你一直将自己跟同僚對比,那麼你同僚的上限就是你的上限
  • 你拿尤大跟自己對比,那麼尤大的上限就是你的上限

功利性的閱讀源碼

功利性即指有目的性的,明确知道自己幹完某一件事後能得到什麼樣的回報,是以首先你要知道你想得到什麼?

看每一本書都有明确的目的,想學會理财,就得看理财相關的書,想學點技術,就得看點技術相關的書

看源碼也是一樣,你對​

​vue.use​

​之後發生了什麼比較好奇,或者是你覺得現在面試都需要會看點源碼,這都很好,至少你有明确的訴求

凡事隻要有了功利屬性,才更容易走的下去,否則就是真香警告

2.源碼應該怎麼閱讀

單點突破

這種情況一般在是自己寫需求遇到問題了,或者突然一時興起想看看内髒的同學,可以直接粗暴的找到源碼的倉庫,直接在該倉庫搜尋關鍵字,然後根據模糊搜尋的結果再結合自己的了解選擇合适的結果,以下以​

​Vue.use​

​為例,如下圖

為什麼要學習源碼,怎麼學習?

我們可以看到第一個結果就是​

​.spec​

​ (Standard Performance Evaluation Corporation,标準性能評估機構bai) 可以了解為代碼的試金石,優秀開源代碼的标配,直接代表着代碼的穩健性

點進去我們看到的代碼如下,從圖中我們就能大緻的猜到​

​Vue.use​

​的一些使用場景及邊界值

為什麼要學習源碼,怎麼學習?

image.png

從結果的第四個點進去,我們就能直接看到源碼了,是不是很easy ?

為什麼要學習源碼,怎麼學習?

系統閱讀

即指以項目為次元的源碼閱讀,這種方式比上面的單點突破價值就要大很多,讀完之後,不僅可以知道執行一個Api時具體發生了什麼,更重要的是能學習到項目整體的設計思想和架構理念

當然,閱讀難度也會有相應提高,這裡給你四個建議

  • 決心(事事把決心放第一)
  • 對你所閱讀的代碼架構要有基本的了解(不然你讀個啥)
  • 設定一個計劃并自我監督總結
  • 循序漸進,任何事情需要一個過程,由易到難,由淺入深

具體方案

  • 選擇合适的工具讓代碼先跑起來
  • 理清楚代碼組織關系及用途
  • 利用好單元測試
  • 利弊權衡(該跳就跳,長期處于蒙的狀态很容易走進死胡同,可以标記回頭再看)
  • 利用搜尋引擎(可以結合網上的源碼分析資料了解)
  • 多跟自己互動(帶問題閱讀)

3.本地怎麼調試源碼

科普一下​

​SourceMap​

​​這個東西吧,分開念​

​Source​

​​ ​

​Map​

​​,一句話了解就是一段維護了前後代碼映射關系的​

​json​

​描述檔案,具體故事可以泡杯茶慢慢講了,這裡不過多描述,感興趣的自行查閱相關文檔

有了​

​sourcemap​

​​檔案後,你想​

​debugger​

​​還是​

​console​

​,就可以随意了

在vue3的​

​example​

​​中的我們看到示例引用的都是​

​dist​

​檔案

為什麼要學習源碼,怎麼學習?

隻需要将​

​sourcemap​

​​配置開啟,然後就能随意的​

​debugger​

​了

為什麼要學習源碼,怎麼學習?
為什麼要學習源碼,怎麼學習?

最後

  1. 關注我的公衆号​

    ​若川視野​

    ​,回複pdf領取前端優質書籍pdf
  2. 覺得文章不錯,可以點個​

    ​贊​

    ​​呀^_^另外歡迎​

    ​留言​

    ​交流~