大家好,我是若川。我持續組織了近一年的源碼共讀活動,感興趣的可以?點此掃碼加我微信?lxchuan12?參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》?包含20余篇源碼文章。歷史面試系列。另外:目前建有江西|湖南|湖北
籍前端群,可加我微信進群。
本文作者:@孟祥_成都
原文鏈接:https://juejin.cn/post/7168671474234949662
1前言
最近在更新react組件庫源碼的文章,其實vue和其他框架都一樣,就是我發現自己在一年前直接看這些源碼(不調試),還是有點吃力的,然后就放棄了。
可最近不知道為啥,看這些源碼對我來說沒啥太大難度,直接干就完事了,不需要啥調試。自己好好回想了一下,為什么會有這樣的變化?也算幫助一些想突破自己技術瓶頸的同學。
有新人在下面留言說看到很焦慮,剛進前端領域的同學,你們首要任務是能完成業務開發,此時業務開發帶給你的提升是最明顯的,文章更多的是幫助業務api用熟之后的想有突破的同學,不用焦慮,哈哈。而且話說回來了,我在平時工作中看到不想突破的人基本占百分90%,無論大小廠,所以不突破也沒啥,大部分人只是僅僅當一個普通工作而已。
2結論
首先我得出結論是:
最開始不要自己去讀源碼,看別人的文章和視頻即可,目的是先接觸比自己能力層次高的代碼,為超越現有的能力鋪路(后面詳細談怎么做)
平時注意積累一些手寫題的思路,網上面經很多,主要不是寫出來,是理解原理,理解大于一切,不理解的東西終究會忘記,我們要積累的是能力,能力是第一!(后面詳細談),設計模式里的發布訂閱者模式必須要理解!這是寫很多庫常見的技巧。
最后開始獨立去看一些小的代碼庫,比如騰訊,阿里,字節的組件庫,這些庫大部分組件難度低。
3去哪里看視頻和文章學源碼
視頻
最簡易的就是跟著視頻學,因為視頻會把代碼敲一遍,給你思考的時間,講解也是最細的,很適合剛開始想造輪子的同學了解一些有難度的源碼。
舉個例子:
我當時看了koa的源碼,了解了koa中間件的原理,我自己造了一個自動化發布腳本就利用了這個原理,redux中間件也是類似的原理,在函數式編程領域叫做compose函數,koa是異步compose,redux是同步compose,
簡單描述下什么是compose函數我把大象裝進冰箱是不是要 1、打開冰箱門 2、裝進去大象 3、關冰箱門那么很多同學就會寫一個函數
function?裝大象(){//?打開冰箱//?裝大象//?關閉冰箱門
}
compose函數會把這個過程拆開,并且抽象化
//?把裝大象抽象為裝東西函數
function?裝東西();
function?打開冰箱();
function?關閉冰箱();compose(打開冰箱函數,?裝東西函數,關閉冰箱函數)
此時compose把上面三個函數抽象為一個打開冰箱往里面裝東西的函數,我們只需要把參數大象穿進去就抽象了整個過程
compose(打開冰箱函數, 裝東西函數,關閉冰箱函數)(大象)
具體內容我還寫過一篇文章,有興趣的同學可以去看看:終極compose函數封裝方案![1]這個大家應該有自己的去處,我自己的話很簡單,視頻一般去b站,就是bilibili,有些同學以為這是一個二次元網站是吧,其實里面免費的學習資料一抓一大把呢,啥都有。
比如說我在b站看了很多linux入門教學視頻,還有一個培訓公開課,講的都是源碼,什么手寫react hook,手寫webpack,手寫xxx,那個時候說實話,聽了視頻也不是很理解,但是我還是挺喜歡前端的,沒咋理解就繼續聽。
記住,我們需要短時間內提升能力,所以視頻算是其中最快的了,其他方法不可能有這個來的快,并且沒理解就算了,能理解多少是多少。
學習是一個螺旋上升的過程,不是一下子就全懂或者全不懂的,都是每次比上一次更懂一點。除非你是天才,急不來的。
視頻搜索第二大去處就是論壇,一些論壇有各種各樣的培訓視頻,這種論壇太多了,你谷歌或者百度一抓一大把。
對了,谷歌是爸爸,你懂我意思,不要吝嗇小錢。在搜索學習資料面前,百度就是個弟弟。
4文章
文章一定記住,在精不在多。
切記,每個人都處在不同的學習階段,不要盲目追求所謂的大神文章,不一定適合你,比如說有些人剛接觸前端,你去看有些有深度的文章對你沒啥好處,浪費時間,因為你理解不了,理解不了的知識相當于沒學,過兩天就忘了。
文章選擇范圍,比如掘金,知乎還有前端公眾號,基本上就差不多了,選一兩個你覺得你這個階段能吸收的,好好精讀,堅持個一年你會發現不一樣的。
5額外的知識儲備
前端3年前主流的前端書我都讀過,什么紅寶書,權威指南都讀了好幾遍了。
但有一本從菜鳥到高級-資深前端很推薦的一本是:JavaScript設計模式與開發實踐(圖靈出品)(騰訊的一位大哥寫的,不是百度的那位,這兩本書我都看過)
里面的知識點很干很干,里面有非常多的技巧,比如說你的同事寫了一個函數,你不想破壞函數,有什么辦法拓展它(其實我覺得我想的這些題就比前端八股文好玩多了,是開放性的)
技巧很多,比如面向切面編程,加個before或者after函數包裝一下
比如責任鏈模式
比如剛才的compose函數
比如裝飾器模式
6確立自己的發展方向
大家其實最后都要面對一個很現實的問題,就是35以后怎么辦,我個人覺得你沒有對標阿里P7的能力,落地到中小公司都難。
所以我們看源碼,看啥都是為了提升能力,延長職業壽命。
那么如何在短時間內有效的提升,你就需要注意不能各種方向胡亂探索,前端有小游戲方向,數據可視化方向,B端后臺系統方向,音視頻方向等等
我是做b端,那b端整個鏈路我就需要打通,組件庫是我這個方向,所以我探索這里,還有node端也是,寫小工具是必須的,但是你們說什么deno,其他的技術,我根本不在乎,沒時間浪費在這些地方,當然除了有些業務上需要,比如之前公司有個ai標注需求,用canvas寫了一個類似畫板的工具,也算開拓了知識點,但這也不是我重點發展的方向,不深入。
我做組件庫是為了后面的低代碼,低代碼平臺的整體設計思路我已經想好了,整體偏向國外開源的appsmith的那種方式,然后打通組件間通信的功能,我認為是能勝任稍微復雜的b端業務場景的,而且可以走很多垂直領域,比如網站建站,微信文章編輯器這種。所以我才開始研究組件庫的,因為低代碼大多數復雜功能都在組件上。
7工作上勇于走出舒適圈
為什么這個跟看源碼相關呢,如果你做過比較復雜的項目,你會發現很多現成的第三方庫滿足不了。比如說我自己遇到過的大型sass項目,ant design就滿足不了,所以你才發現,源碼看得少加上業務急,代碼就爛,時間上就留不出自己偷偷學習的時間,如果你想長期從事軟件開發,沒有成長是一件很危險的事(錢多當我沒說,哈哈),因為無論如何,有本事,總沒錯的。
當你的業務難度上去的時候,會逼著你去提升能力,所以你如果想前端走的更遠,建議不要在自己的舒適區太久,業務上選擇一家比較難的公司,后面再跳槽就是沉淀這段時間的知識點了,當你能夠有自信說,我現在帶團隊,從0到1再遇到那么難的業務時,能從容應對,恭喜你,你可以去面下阿里p7,不是為了這個工作啊,可以檢驗下是不是達到這個職位的標準了,我就喜歡偶爾面一下,也不是換工作,就是看看自己進步沒。
參考資料
[1]
https://juejin.cn/post/6989815456416661534: https://juejin.cn/post/6989815456416661534
·················?若川簡介?·················
你好,我是若川,畢業于江西高校。現在是一名前端開發“工程師”。寫有《學習源碼整體架構系列》20余篇,在知乎、掘金收獲超百萬閱讀。
從2014年起,每年都會寫一篇年度總結,已經堅持寫了8年,點擊查看年度總結。
同時,最近組織了源碼共讀活動,幫助4000+前端人學會看源碼。公眾號愿景:幫助5年內前端人走向前列。
掃碼加我微信 lxchuan12、拉你進源碼共讀群
今日話題
目前建有江西|湖南|湖北?籍 前端群,想進群的可以加我微信 lxchuan12?進群。分享、收藏、點贊、在看我的文章就是對我最大的支持~