Vue2 是我零基础自学前端时接触的第一个框架,并且由于其学习曲线平缓,所以我很快就上手了。并且还写了一个玩具项目,2017 年依靠 Vue2 我也找到了自己的第一份前端工作。
但是随着项目经验的增加,接触到更多的前端框架,我逐渐对 Vue 产生了一些疑惑。
比如 Vue 的代码是在一个 .vue
的文件中写的,浏览器明显是不认识后缀名为 .vue
的文件,那么这个是怎么做到的呢?
v-model
官方说是一个语法糖,那么这个所谓的语法糖到底是什么东西呢?又是如何实现的呢?还有很多疑惑就不一一举例了。
因为项目一直很忙(完全就是借口),所以这些 Vue 编译黑魔法的问题一直压在我的心底。
直到在项目中使用了 Vue3,发现 Vue3 中又引入了一个新的黑魔法:宏函数。
这些宏函数给我带来了更大的疑惑,为什么宏函数不需要从 Vue 中 import 导入呢?
按理说我们要使用一个函数,那么他肯定有一个地方去定义或者 import 导入,但是官方的 demo 说宏函数是不需要从 Vue 中 import 导入的。
为了搞清楚这个问题,我就开始本地跑了一个 Vite 项目,然后去 debug 调试 Vue 源码,最终搞清楚了宏函数这一黑魔法到底是怎么实现的。
并且在调试的过程中发现 debug 调试 Vue 源码真简单,然后就使用同样的方法将这些年压在心底,关于 Vue 编译黑魔法的疑惑全部搞清楚了。
当我将“我是如何搞清楚这些问题的过程”写出来后,我发现这些问题背后的知识点已经汇聚成了一套完整的 Vue 编译原理,最终形成了这本电子书:《Vue3 编译原理揭秘》
。