【Vue2.x 源码学习】专栏目录与重构规划

237 阅读7分钟

一,前言

之前参加了很多更文活动,所以就写了不少水文,今年计划投入大量时间做重构,争取达成以下几个目标:

  • 第一,提升专栏的内容质量,能够真正帮助更多有需要的伙伴;
  • 第二,对内容进行归纳和扩充,巩固提升自己对相关知识的理解和认知;
  • 第三,梳理总结文章的写作思路,从内容的展现形式出发,提升写作技能和创作水平;

二,专栏的写作回顾

  • 1,专栏内容是基于语雀的初稿整理而来的;
    • 还好之前有些积累,否则按更文活动的要求,没有最水只有更水;
  • 2,初稿内容其实并不完整,与其说是整理,倒不如说“重写”更恰当;
    • 虽然说是基于初稿整理,但每天基本都会弄到很晚,时间长了就有点儿像交作业,质量没有保障;
  • 3,很多关键点并没有按照预想的那样完整写出来,一些精彩的内容就这样错过了;
    • 记得当时写 diff 算法那篇,熬夜一步一步画出了所有场景下的节点更新过程;你以为是我想画吗?diff 的过程画图反而是最“简单”的表达方式;其实,我是想说,希望所有文章都能像这样...

其实,还有很多,很多...都还没能实现...


三,专栏的重构规划

todo:2023 规划,不是重点,后补;

虽然自己能力很有限,但通过多下功夫来提升一些质量,“踮一踮脚或者大跳一下应该是可以摸得到的”;

所以,今年要对 Vue2 这个专栏动刀了,说实话我对大段大段的删除或重写并不是很在意,因为质量确实拉胯、惨不忍睹...;(为什么要对 Vue2 动刀?因为后面要写 Vue3 了~)

专栏的重构工作在今年 1 月初就已经启动了,目前已经行动了 2 周,第一轮已完成 12 篇;

为什么说是“第一轮”?

  • 因为问题实在太多了,一轮肯定搞不定;
  • 因为目标定的也很高,至少得折腾三轮;

目前,三轮重构的规划如下:

  • 第一轮重构:
    • 针对每一篇文章,调整内容的基础排版、目录划分、优化内容描述,添加示例说明、代码注释、必要截图;(基础的内容梳理,使表述更容易理解);
  • 第二轮重构:
    • 汇总第一轮重构中总结的问题,参考 Vue 框架的实现重新调整专栏的大章节和小主题,对内容进行适当的合并、拆分和重构;(这版目录就是 Vue2 全部核心知识点,便于后续对相关知识点的内容进行扩充)
  • 第三轮重构:
    • 捋清框架脉络,贯穿核心知识点;(按照章节的推进,循序渐进绘制出框架流程图,对重点内容进行补充,比如:从源码层面对常见面试题进行剖析;)
  • 第四轮重构(持续重构):
    • 一个会持续重构的专栏,以提升写作能力为目标;

在整个重构的过程中,还有至关重要的一点,原定放在第二轮进行(由于工作量可能会比较大,待定;这一点也是我认为最应该下功夫做好的):

  • 调整内容的行文逻辑:
    • 1,框架提供了 xxx 特性,功能演示、使用的注意事项;(聚焦一个知识点应用)
    • 2,根据相关功能特性,猜测框架的实现原理并提出问题;(充分思考并提出问题)
    • 3,框架是如何实现的,核心实现流程分析,方案优劣对比;(分析框架设计思路)
    • 4,模拟实现相关功能特性,掌握框架设计与核心实现原理;(手写核心实现原理)

在以上的规划中,我自己有很多都还一知半解甚至不解,希望通过这次重构可以精进;


四,重构过程记录与问题汇总(专栏目录)

表格内容随文章重构同步更新;

所属模块 主题 知识点 重构时间 问题记录
响应式原理 第一篇 - 使用 rollup 构建 Vue 环境 2023-01-06
第二篇 - Vue 的初始化流程 2023-01-07
第三篇 - 对象的单层劫持 2023-01-07
2023-01-08
第四篇 - 对象的深层劫持 2023-01-08
2023-01-09
第五篇 - 数组的劫持 2023-01-09
第六篇 - 数据代理的实现 2023-01-10
第七篇 - 阶段性梳理 2023-01-06
2023-01-10
2023-01-11
第八篇 - 数组的深层劫持 2023-01-11
第九篇 - 对象数据变化的观测情况 2023-01-11
第十篇 - 数组数据变化的观测情况 2023-01-11
2023-01-12
模板编译 第十一篇 - Vue 的数据渲染流程 2023-01-13
第十二篇 - 生成 ast 语法树 - 流程说明 2023-01-15
2023-01-18
第十三篇 - 生成 ast 语法树 - 正则说明 2023-01-19
2023-01-20
2023-01-24
第十四篇 - 生成 ast 语法树 - 模板解析 2023-01-25
第十五篇 - 生成 ast 语法树 - 构造树形结构 2023-01-26
第十六篇 - 生成 render 函数 - 代码拼接 2023-01-26
2023-01-27
第十七篇 - 生成 render 函数 - 函数生成 2023-01-26
2023-01-27
2023-01-28
第十八篇 - 根据 render 函数,生成 vnode 2023-01-28
第十九篇 - 根据 vnode 创建真实节点 2023-01-30
第二十篇 - 使用真实节点替换原始节点 2023-01-31
2023-02-01
依赖收集 第二十一篇 - 依赖收集的过程分析 2023-02-01
第二十二篇 - dep 和 watcher 关联 2023-02-03
2023-02-07
第二十三篇 - 依赖收集 - 视图更新部分 2023-02-03
2023-02-07
第二十四篇 - 异步更新流程 2023-02-07
第二十五篇 - 数组依赖收集的原理 2023-02-08
第二十六篇 - 数组依赖收集的实现 2023-02-09
2023-02-10
生命周期 第二十七篇 - Vue 生命周期的实现 2023-02-10
2023-02-12
diff 算法 第二十八篇 - diff 算法 - 问题分析与 patch 优化 2023-02-13
2023-02-17
第二十九篇 - diff 算法 - 节点比对 2023-02-17
2023-02-18
第三十篇 - diff 算法 - 比对优化(上) 2023-02-18
第三十一篇 - diff 算法 - 比对优化(下) 2023-02-19
2023-02-21
第三十二篇 - diff 算法 - 乱序比对 2023-02-21
第三十三篇 - diff 算法 - 收尾 + 阶段性总结 2023-02-22
组件渲染 第三十四篇 - 组件部分 - Vue 组件与初始化流程简介 2023-02-23
2023-02-25
2023-03-02
第三十五篇 - 组件部分 - Vue.component 实现 2023-02-23
2023-03-03
第三十六篇 - 组件部分 - Vue.extend 实现 2023-02-24
2023-02-26
2023-03-03
2023-03-04
2023-03-05br>2023-03-16
第三十七篇 - 组件部分 - 组件的合并 2023-02-24
2023-02-26
2023-03-03
2023-03-07
第三十八篇 - 组件部分 - 创建组件虚拟节点 2023-02-26
2023-03-08
2023-03-16
第三十九篇 - 组件部分 - 组件的生命周期 2023-02-27

五,结尾

想要拿到一个好的结果,就必须要有一个好规划,剩下的就是坚持了...