一,前言
之前参加了很多更文活动,所以就写了不少水文,今年计划投入大量时间做重构,争取达成以下几个目标:
- 第一,提升专栏的内容质量,能够真正帮助更多有需要的伙伴;
- 第二,对内容进行归纳和扩充,巩固提升自己对相关知识的理解和认知;
- 第三,梳理总结文章的写作思路,从内容的展现形式出发,提升写作技能和创作水平;
二,专栏的写作回顾
- 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 |
五,结尾
想要拿到一个好的结果,就必须要有一个好规划,剩下的就是坚持了...