視頻講解 b站視頻 www.bilibili.com/video/BV1fa…html
參考資料一波vue
Vue3.0代碼結構react
Vue3.0資源全家桶git
最近在學習Vue3.0源碼,爲了達到刻意練習的目的。決定給Vue3.0提點PR來驗證本身的源碼理解水平。通過兩天的奮戰添加了一個官方的todo test case。github
github.com/vuejs/vue-n…chrome
如下我把大致的步驟總結一下。npm
首先須要將vue代碼經過github的fork功能複製一份到本身的github瀏覽器
複製後的結果 github.com/su37josephx…markdown
git clone git@github.com:su37josephxia/vue-next.git 複製代碼
# 設置國內鏡像 yarn config set registry https://registry.npm.taobao.org # --ignore-scripts 用於忽略chrome瀏覽器的下載 yarn install --ignore-scripts 複製代碼
# 強烈推薦你們全局安裝 npm i jest -g jest --coverage 複製代碼
fork代碼須要隨時拉去官方最新的代碼更新保持同步
這個只須要作一次
git remote add upstream https://github.com/vuejs/vue-next
複製代碼
這個須要隨時作 保持你的master分支永遠是官方最新成果。
# 抓取源倉庫修改 master分支 git fetch upstream master # 切換分支 git checkout master # 合併遠程分支 git merge upstream/master 複製代碼
好比我想解決的這個問題是這個尤大遺留的這個測試TODO
git checkout -b comments
複製代碼
開發後的結果大概是這個樣子
jest packages/compiler-core/__tests__/transforms/vIf.spec.ts --watc
複製代碼
開發完成後記得要跑全覆蓋 確認本身的代碼對全局沒有影響。
jest --coverage
複製代碼
這裏面涉及到一個問題就是必需要按照官方須要的格式提交commit msg。否則那會被hooks進行自動檢查拒絕你commit。 github.com/conventiona…
git commit -am 'test(compiler-core): add vif with comments test case' 複製代碼
git push --set-upstream origin comments
複製代碼
另外若是涉及屢次提交會有一個要處理合並多個commit的問題。
TODO 近期更新
最後就能夠等待着你勝利的好消息了
刻意練習纔是提升的不二法門 你們若是要閱讀源碼不妨給本身頂一個成功提出一次PR的小目標。
數據響應式 | reactivity | reactivity ref effect | |
運行時 | runtime-core | 核心 | inject 生命週期 watch directive component |
runtime-dom | Dom | class style | |
runtime-test | 測試仿真 | ||
編譯器 | compiler-core | 核心 | 基本類型解析 AST |
compiler-dom | Dom | v-html v-text v-model v-clock | |
compiler-sfc | 單文件編譯 | ||
compiler-ssr | 服務端渲染編譯 | ||
工具方法 | shared | ||
vue | vue | ||
模板解析器 | template |
覆蓋率 咱們增長一個參數把覆蓋率跑出來
npx jest --coverage
複製代碼
實際上跑覆蓋率的時候是有錯的 咱們先不去管他 咱們先解析一下這個報告怎麼看,若是你們學過軟件工程會知道通常從理論上講覆蓋率包括
語句覆蓋 節點覆蓋 路徑覆蓋 條件組合覆蓋 可是通常來說不一樣框架理解不同 在Jest這裏大概是這樣分解的
%stmts | 是語句覆蓋率(statement coverage) | 是否是每一個語句都執行了? |
%Branch | 分支覆蓋率(branch coverage): | 是否是每一個if代碼塊都執行了? |
%Funcs | 函數覆蓋率(function coverage): | 是否是每一個函數都調用了? |
%Lines | 行覆蓋率(line coverage): | 是否是每一行都執行了? |