「千里之行,始於足下。」——老子
去年的這個時候,我剛完成培訓機構的學業,和一同奮鬥過來的夥伴們一同為今後的求職做準備。當時,我們無不為了盡可能提升錄取的機率,而努力充實著自己。有些人選擇學習更多陌生技術,也有些人上leetcode刷題,只有我選擇了這條最為崎嶇的路——Vue3源碼
。
在我主管面試完我後,我的前輩們跟主管打聽了有沒有令他印象深刻的面試者。「有個能單手拍手的人,一上來就跟我聊Vue3源碼。」我想通過我主管的評價,足以證明Vue3源碼是僅次於單手拍手的高級才藝
。除此之外,學習Vue3源碼還能帶來以下好處。
想卷算法的前端工程師應該不在少數,但學了算法的你真能把算法活用在前端開發上嗎?除非你的事業是為公司或社群開發庫乃至框架,不然就串串api、做做簡單的交互效果還真用不到甚麼算法,了不起就是LRU算法快取api或2進制儲存多選選項節約資料庫空間的那種程度。
但在Vue3源碼中能看到最長遞增子序列,那種正常人類根本想不到的奇蹟操作
。
請先看過以下代碼:
<template>
<div>{{ time }}</div>
</template>
<script lang="ts" setup>
import { computed } from 'vue'
const time = computed(() => new Date())
</script>
你認為畫面上的這個time會時時更新嗎?我想只要是位了解computed回調的觸發條件的工程師,都能毫不猶豫地回答我「不會」。但你相信嗎,我還真就見過有大型專案開發經驗,卻沒能答對這道題的工程師。
不論你是幾年經驗的資深前端,你都不能保證你在Vue的學習上沒有任何觀念漏洞。唯有學習Vue的實現原理,才能真正掌握這門技術
。
譬如ES6的WeakMap、Symbol型別以及位元運算等等,這些js的語法你都已經會了嗎?如果上述有任何一個語法對你來說是陌生的,源碼的學習都能讓你獲得全新的知識。
如果你和去年的我一樣,都是剛完成前端的學業,準備初入職場的小萌新,我敢打賭你的變數命名、方法封裝、模塊拆分都會令同事頭痛不已。當然這不是你或你的老師的錯,畢竟你把開發所需的知識塞進腦子裡就已竭盡全力了,你的老師理應沒有餘裕再把這些花裡胡哨的東西展示給你看。
當然,學習源碼的好處決不限於以上所述,學習源碼甚至能改善一個人的性格——透過了解自己的渺小從而成為一個謙遜的人。所以學習源碼吧!你不會為此刻的選擇後悔的。
無論是學習任何技術,找到一個適合自己的教材都是重要的。但如果這項技術是源碼,你需要的教材可能不只一份。
去年的我在b站找了兩位老師的影片,對照著尤雨溪的github,每日10小時以上的高強度學習持續了長達一個月,才好不容易復刻出了一個功能極簡版的Vue。這次鐵人賽我想整理一份學習筆記,希望它們能成為有緣人掌握Vue3源碼的其中一份材料。
計畫上,我們要學習以下知識點:
但實際上因為鐵人賽只有30天,不太可能把所有的知識點都講完講清楚,所以就講多少算多少ㄏ