视频讲解 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): | 是否是每一行都执行了? |