Deepseek程序猿进阶计划
糊里糊涂做了十年前端程序猿,从来不爱深究什么底层,进修什么新技术,只是在工作中,遇到新项目做新项目,遇到需要的新技术现去调研。可是大家都说前端是个技术更新很快的行业,我不知道我现在会的那些皮毛的技术还能在这个AI盛行的年代支撑多久,故而决定开始进行一些前端知识进阶。
总体来说还是个懒惰的人,也不知道从何做起,所以腆着脸向Deepseek发难:“前端十年 会vue2 vue3学过一点 没看过源码不知道如何下手 总感觉技术一点也不厉害 是继续研究基础知识 还是学习高级理论 还是转行 如何提升自己?你可以给我制定一个详细的计划吗?”(由此问题可见我的技术储备真的很低😭)
得到了Deepseek的回答,我决定按照它的计划能学点是点呗,正所谓活到老学到老。
以下为Deepseek给出的计划:
总目标
12周后,你能:
-
手写一个迷你版Vue3响应式系统(核心功能)
-
清晰画出Vue3首次渲染和更新的流程图
-
在公司内做一次15分钟的技术分享(形式不限)
第一阶段:打地基,消除对源码的恐惧(第1-3周)
目标:搞懂核心JS知识 + 看懂Vue最简模型
第1周:设计模式与JS定点突破
-
周一/二:搞清楚 观察者模式 vs 发布订阅模式。
✍️ 动手:分别用20行代码实现一个简易 EventBus(发布订阅)和一个依赖收集器(观察者)。 -
周三/四:搞懂
Object.defineProperty和Proxy的区别。
✍️ 动手:实现一个reactive(obj),让修改属性时打印“更新了”。 -
周五/六:搞懂位运算基础(
| & ~)。
✍️ 动手:写个函数判断一个数是不是2的幂次(会用到位运算)。 -
周日:复习闭包 + 微任务
Promise。
✍️ 动手:手写一个nextTick(利用Promise.resolve().then)。
✅ 第一阶段验收:你的笔记里有3个可运行的代码片段(EventBus、简易reactive、nextTick)
第2周:具象理解Vue工作流程
-
周一/二:不看源码,先看两篇文章/视频:
-
“Vue3 响应式原理”
-
“虚拟DOM到底快在哪”
✍️ 动手:用卡片画出三张图(响应式 -> 虚拟DOM -> DOM更新)
-
-
周三~周六:用一个周末下午,跑通官方最小示例。
✍️ 把下面代码手动敲出来,理解每一步作用:html
<div id="app">{{ count }}</div> <script> const { reactive, effect } = Vue // 假装有 const state = reactive({ count: 0 }) effect(() => { document.getElementById('app').innerHTML = state.count }) setTimeout(() => state.count++, 1000) </script> -
周日:在笔记里写下“如果让我实现 reactive 和 effect,我会怎么做”(哪怕很幼稚)。
第3周:第一次直面源码(核心入口)
-
周一/二:克隆
vue-next,用 Octotree 找到packages/reactivity/src/effect.ts和reactive.ts。
不要细读,只做一件事:找到export function reactive和export function effect的位置。 -
周三/四:跟着一篇带读文章(搜“手撕Vue3响应式”),在源码里加
console.log。
✍️ 跑通一个最小demo,在控制台看到 log 顺序。 -
周五/六:画出你理解的 track → effect → trigger 调用链。
-
周日:休息 & 复盘。把第一阶段的3个小demo合并成一个
my-reactivity.js文件。
✅ 第二阶段验收:你能对新人说出“响应式就是通过 Proxy 拦截 get 收集依赖,set 触发依赖”
第二阶段:真正啃下响应式核心(第4-6周)
目标:手写迷你 Vue3 响应式系统
第4周:手写 reactive 和 effect(跟着代码走)
-
周一~周四:每天写30分钟。
✍️ 目标输出myVue3/reactivity.js,实现:-
reactive(基于 Proxy) -
effect(立即执行并记录依赖) -
track/trigger
-
-
周五/六:让你的代码跑通这个测试:
js
const obj = reactive({ a: 1 }) effect(() => console.log(obj.a)) // 应打印 1 obj.a = 2 // 应打印 2 -
周日:对比官方源码,找差异(比如依赖存储用的 Map/Set 结构)。
第5周:解决分支切换与嵌套 effect
-
周一~周三:发现你的简单实现有bug:
js
effect(() => { console.log(flag ? obj.a : obj.b) }) // 当 flag 变化时,依赖不会自动更新✍️ 修改代码,实现 cleanup 逻辑。
-
周四/五:支持嵌套 effect(effect 里调用 effect)。
查资料看如何用effectStack解决。 -
周六/日:手写实现
ref和computed(基于你已有的 effect)。
第6周:追一个完整流程(从 new Vue 到页面渲染)
-
周一/三:转而阅读
runtime-core/src/renderer.ts中的patch和mountElement。
✍️ 只关注“初次渲染”路径,画出树形调用图。 -
周四/六:回答这个问题:
“<div>{{ count }}</div>中的count是如何触发重新渲染的?”
结合你写的响应式系统,串起来。 -
周日:写一篇笔记《我理解的 Vue3 渲染流程:从响应式到真实DOM》。
✅ 第二阶段验收:你的
my-reactivity.js超过150行且能跑通复杂例子(嵌套、分支切换)
第三阶段:建立“我能读源码”的自信(第7-9周)
目标:独立解决一个实际疑惑
第7周:攻克一个你最常用的指令
-
周一/二:选题:
v-if/v-show/v-for三选一。 -
周三/五:在源码中搜索该指令的处理位置(通常在
compile-core或runtime-dom)。
思路:找到transform函数。 -
周六/日:总结该指令的“编译时 + 运行时”行为。
✍️ 输出一张对比表:v-if和v-show在源码层面的本质区别。
第8周:搞懂一个性能优化点
-
选题:Vue3 为什么比 Vue2 快?
锁定具体点:PatchFlag(静态标记)或Block tree。 -
每天动作:
-
在
packages/compiler-core里搜索PatchFlag。 -
看它是在哪里被赋值的。
-
在
runtime-core里看patchFlag如何被使用。
-
-
周末输出:一页PPT《一个 PatchFlag 如何让 diff 算法跳过静态节点》。
第9周:整理一篇可分享的稿子
-
周一/三:选择你最透彻的一个模块(建议响应式或首次渲染流程)。
写一篇1500字以内的文章,要求必须有自己画的图(手绘拍照也行)。 -
周四/六:在公司找1-2个同事,讲给他们听(15分钟内)。
重点不是讲多深,而是 能停下来回答一个问题。 -
周日:根据反馈修改文章,发到掘金/知乎/内部wiki。
✅ 第三阶段验收:你完成了一次15分钟的技术分享(可以是录屏,不用完美)
第四阶段:从“读”到“创造”(第10-12周)
目标:输出一个解决业务痛点的demo
第10周:找一个真实业务痛点
-
回顾你的项目:找到一处“数据很大,交互卡顿”或者“动态组件很慢”的地方。
-
用你学到的:
-
如果数据大,尝试用
shallowReactive或markRaw(你已理解原理)。 -
如果频繁重新渲染,用
shouldComponentUpdate类比或v-once。
-
-
做对比:改造前后录屏对比,记录时间差异。
第11周:造一个轮子(迷你Vue Router 或 迷你Pinia)
-
选题:用你掌握的响应式 + 路由原理,实现一个几十行的
createRouter。
✍️ 支持push和监听hashchange,更新当前组件。 -
目的:不是为了实用,是为了证明“任何Vue生态库,底层也不过是响应式 + 事件”。
第12周:全面复盘,建立长效习惯
-
整理你的12周产出:
-
代码:
my-reactivity.js+ 迷你轮子 -
文章/PPT 至少2份
-
流程图 3张以上
-
-
定下后续节奏:
-
每月只读透一个模块(比如下一个目标
Scheduler或KeepAlive)。 -
遇到业务问题先去源码搜关键词,养成习惯。
-
✅ 最终验收:你明确知道自己“已经比过去十年任何一天都更理解Vue”,并且有公开产出物可以证明。
以上,不知道能坚持到哪一步,总得来说,学一点就比不学强,gogogo!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)