關于為什么我推薦大家看vue代碼的隨想

大家好,我是若川。今天給大家推薦一篇大圣老師在知乎的回答,很快能看完。我也曾經回答過這個問題。若川知乎高贊:有哪些必看的 JS 庫?不要為了讀源碼而讀源碼,但要學會看源碼。自己常用的熟悉的庫的源碼值得讀讀。

點擊下方卡片關注我、加個星標


很贊同【越好的框架越不需要使用者特地去讀】這個理念,畢竟我們研讀源碼就是為了解決具體問題,按需去看比較好,不過這個前提是你已經是一個系統化訓練的工程師,如果是針對新手,尤其是前端這個特殊的領域,大部分同學都不是計算機出身 ,現在我建議去看vue3的源碼 并不是其他的不好,而是Vue3很適合用來幫助初中級前端走完升級的路線,通過vue3源碼中的細節,構建和豐富自己的前端知識體系

  1. vue3大部分代碼是小右寫的,平均代碼質量比較高,React也很贊,但是整體工程化過于復雜,不太適合新手,建議搞定vue之后去看React更好一些

  2. 源碼閱讀本身也是一個需要練習的技能,一次訓練,持久收益

  3. 先忽略ts,去看@vue/reactivity,這是個獨立的包,1000左右,難度適中,測試覆蓋率100%(到100%的測試case還是我提的 嘿嘿),非常適合作為第一個閱讀的源碼

    1. 還能鞏固ES6+的幾個新數據解構和語法

    2. 之前我推薦1000左右的代碼還是seajs

  4. 研究文件解構,學習一下工程化體系

    1. lerna管理

    2. script下面的文件,研究commit規范,git hook,dev build等配置

  5. 研究runtime-core和dom,了解vue整個框架設計的理念

    1. 事件修飾符once的實現,并不需要add再removeListener,而是addEventListener的時候加一個第三個參數,{once:true}的配置就可以

    2. insertBefore第二個參數給null的話,和appendChild效果一樣

    3. 等等等等, 會讓自己恍然大哦一下的小tips

    4. 細節不多說,比如dom diff里面的getSequence生成最長遞增子序列,會讓你嘗試去研究算法是個啥,然后研究vue3的貪心+二分實現的時候,還會了解動態規劃的實現,算法能力++,至少意識到需要學算法,這也是前端老鐵的軟肋質疑

    5. 有些vue的實現讓你了解js和dom里一些容易忽略的細節

    6. shapeFlag和patchFlag還會讓你意識到位運算也需要學學

    7. typescript不用多說,看見不懂的語法,按需學一學也不錯

    8. 看完就可以搞一本算法第四版之類的,好好學一下算法,有時候知道自己需要學也挺重要

  6. compiler了解vue編譯的優化

    1. 讓你知道原來還有個編譯原理的東東需要學習

    2. 先去看the-super-tiny-compiler這200行代碼, 了解一下parser,ast,codeGenerator等是啥意思

    3. 看完compiler dom和core ,既能應付面試,還大概入門了編譯原理

  7. 其他的很多實現也挺有意思,而且大部分代碼都配有測試

    1. slot

    2. v-model

    3. keep-alive

  8. 其他包比如sfc,test選看,按需看就行

  9. 其他的vuex,vite,router啥的也是類似

綜上所述,看完vue生態代碼其實是對前端這個特殊行業的新手工程師,可以起到幫助鞏固計算機基礎的重要性。?

有時候不是我們不勤奮,而是沒有科班的訓練,我們不知道這些東西學的意義是啥,閱讀框架源碼的意義也在于此?

當然完整系統的看完一個后,閱讀源碼這個技能你也掌握了,針對其他框架就可以按需閱讀,也就找到了自己高效學習的路線?

ps:我vue3源碼也是粗略看過,如果有說的不對的地方,以vue最新的源碼為準

歡迎閱讀原文去知乎討論


最近組建了一個江西人的前端交流群,如果你也是江西人可以加我微信 ruochuan12 拉你進群。


今日話題

略。歡迎分享、收藏、點贊、在看我的公眾號文章~

一個愿景是幫助5年內前端人走向前列的公眾號

可加我個人微信?ruochuan12,長期交流學習

推薦閱讀

我在阿里招前端,我該怎么幫你(可進模擬面試群)

2年前端經驗,做的項目沒技術含量,怎么辦?

點擊方卡片關注我、加個星標

·················?若川簡介?·················

你好,我是若川,畢業于江西高校。現在是一名前端開發“工程師”。寫有《學習源碼整體架構系列》多篇,在知乎、掘金收獲超百萬閱讀。

從2014年起,每年都會寫一篇年度總結,已經寫了7篇,點擊查看年度總結。

同時,活躍在知乎@若川,掘金@若川。致力于分享前端開發經驗,愿景:幫助5年內前端人走向前列。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275802.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275802.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275802.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法 - 最好、最壞、平均復雜度

注:本文僅為筆記。 原文 極客時間 - 數據結構與算法之美 - 04 | 復雜度分析(下):淺析最好、最壞、平均、均攤時間復雜度 最好、最壞時間復雜度 略,比較容易分析。 平均時間復雜度 需考慮概率來計算。 概率論中的加權平…

java編譯多個包_javac一次性編譯多個包下的.java文件

標準的javac可以跟一個加一個文件名,該文件里保存了源文件列表,使用下面的命令:javac sourcefilecd xxxdir *.java/s/b > srclist.txtor dir x:/yyy/zzz/*.java/s/b > srclist.txtjavac -cp .;xxx/yyy/zzz.jar;x…

555的傳說

鄭昀 20101118 昨天聽1039電臺才知道,北美電影里常出現的555開頭號碼是行規慣例,因為當年貝爾系統為測試鏈路中所有交換機的基本功能,全部由5組成的號碼(555–5555)作為特別的測試號碼被保留,時至今日只剩下…

沒想到你是這樣的npm install

大家好,我是若川。今天給大家推薦一篇關于 npm install 的好文。很快能看完。點擊下方卡片關注我、加個星標學習源碼整體架構系列、年度總結、JS基礎系列前言項目中執行npm install發生了什么,眾所周知,執行npm install時會在當前項目目錄的n…

Django——Model

一、 ORM 在 MVC 或者說 MTV 設計模式中,模型(M)代表對數據庫的操作。那么如何操作數據庫呢? 我們可以在 Python 代碼中嵌入 SQL 語句。 但是問題又來了,Python 怎么連接數據庫呢?可以使用類似 pymysql 這一…

大理石在哪兒_如何創建用戶體驗寫作課程而又不失大理石

大理石在哪兒I’m a UX Writer. It’s a designated human on the software development team who writes words for interfaces. All the words. From the tiniest tooltips to navigation, to buttons, to errors, and so on, ad infinitum. UX writing is less writing and …

理解 JavaScript 閉包

簡介 Closure 所謂“閉包”,指的是一個擁有許多變量和綁定了這些變量的環境的表達式(通常是一個函數),因而這些變量也是該表達式的一部分。 閉包是 ECMAScript (JavaScript)最強大的特性之一,但…

in the java search_elasticsearch which: no java in (/sbin:/bin:/usr/sbin:/usr/bin)

機器:centos7.2javahome:export JAVA_HOME/root/jdk1.8.0_60export PATH$JAVA_HOME/bin:$PATHexport CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar[rooti-j73a8nn6 ~]# java -versionjava version “1.8.0_60”Java(TM) SE Runtime Envir…

Vuex 源碼還有一些缺陷?

我看了vuex3和vuex4的源碼也輸出了文章,看到這篇時,vuex還有缺陷?看了看確實是好文,不愧是大佬寫的。文章不算長,推薦給大家看看。點擊下方卡片關注我、加個星標學習源碼整體架構系列、年度總結、JS基礎系列眾所周知&a…

三級菜單頁面布局_三級菜單的最快導航布局

三級菜單頁面布局重點 (Top highlight)When users navigate an interface, there’s a need for speed. The faster it is for them to find what they’re looking for, the more time they’ll save on their task.用戶導航界面時,需要提高速度。 他們找到所需內容…

java contains 通配符_java刪除文件支持通配符

packagecom.covics.zfh;importjava.io.File;importjava.io.FilenameFilter;/*** 實現帶*號的刪除文件*authordoudou**/public classTestDeleteFile {public static voidmain(String args[]) {boolean delFile //windows//deleteFileWithSign("E:\\fileDeleteTest\\test\\t…

「線性基」學習小結

向量空間 向量空間亦稱線性空間。 形式化的,我們定義一個向量空間\((P,V,,\cdot)\) 其中 \(P\)是一個域,\(V\)是一個非空的集合,其中的集合稱作向量,同時定義兩種運算分別為向量加法和標量乘法 一個\(P\)上的向量空間\((P,V,,\cdo…

ux體驗網站 英國_定義網站圖像時的UX注意事項

ux體驗網站 英國As the saying goes —俗話說 - “A picture is worth a thousand words.”“一張圖片勝過千言萬語。” When creating content on the web, it’s often recommended to be using high-quality imageries and making sure that the images serve its purpose …

iconfont 支持全新的彩色字體圖標

大家好,我是若川。iconfont我相信大家都用過,而現在支持全新的彩色字體圖標了。這是第二次轉載,上一次的好文是2020 前端技術發展回顧。點擊下方卡片關注我、加個星標學習源碼整體架構系列、年度總結、JS基礎系列一直以來,Web 中想…

回文算法java實現_java算法題:最長回文串

LeetCode: 給定一個包含大寫字母和小寫字母的字符串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區分大小寫。比如"Aa"不能當做一個回文字符串。注 意:假設字符串的長度不會超過 1010。思路:利用hashset&#xff0…

Spring校驗@RequestParams和@PathVariables參數

我們在寫Rest API接口時候會用到很多的RequestParam和PathVariable進行參數的傳遞,但是在校驗的時候,不像使用RequestBody那樣的直接寫在實體類中,我們這篇文章講解一下如何去校驗這些參數。 依賴配置 要使用Java Validation API,…

出色的社區網站_《最后的我們》中出色的制作系統

出色的社區網站游戲設計分析 (GAME DESIGN ANALYSIS) The Last of Us became an instant classic the day it was released, back in 2013. At the sunset of the sixth console generation, it felt like Naughty Dog managed to raise the bar in all critical areas of game…

入坑 Electron 開發跨平臺桌面應用

?作為一個跨平臺的桌面應用開發框架,Electron 的迷人之處在于,它是建立在 Chromium 和 Node.js 之上的 —— 二位分工明確,一個負責界面,一個負責背后的邏輯,典型的「你負責貌美如花,我負責賺錢養家」。上…

Google 拼音會導致卡 Ctrl 鍵?

如果你使用 Windows 7 系統,并同時安裝了 Google 輸入法,那么 Firefox 啟動時、WoW 時一定也常遇到卡住 Ctrl 鍵的問題。 今天仔細搜索了下,傳說將輸入法中“Ctrl鍵快速定位”關閉即可,有待驗證,先記錄著…轉載于:http…

java 接口編程_JAVA面向接口編程

一、什么是面向接口編程要正確地使用Java語言進行面向對象的編程,從而提高程序的復用性,增加程序的可維護性、可擴展性,就必須是面向接口的編程。面向接口的編程就意味著:開發系統時,主體構架使用接口,接口…