第一章 Vue框架该如何设计
设计的权衡
编程的范式
- 命令式编程:完成某个功能的全部步骤由开发者编写
- 声明式编程:完成某个功能的步骤开发者并不关心,只需要表达需要完成此功能
- 举例:你对朋友说,我想看西游记
- 命令式编程:我亲爱的朋友,你现在站起来往前走10步,打开电视,找到西游记,然后告诉我
- 声明式编程:亲爱的,我要看西游记(如何完成由她自行决定,我们并不关心)
- 很明显,命令式编程过于繁琐,声明式编程更友好
- Vue框架内部正是命令式的编程,但是暴露给开发者的是声明式的接口,这样更加友好
性能和维护性
- 命令式编程:完成功能的所有步骤由开发者决定,作为开发者我们清楚的知道当前情况最合适的执行过程,所以理论上可以做到极致的优化。但是所有步骤全部由开发者来维护。可维护性较差。
- 声明式编程:完成功能的步骤开发者一概不知,具体实现过程及代码的健壮由框架来维护,作为开发者我们只关心需要的结果即可,维护性较好。但是框架底层为了实现功能,适配不同情况,需要许多额外代码,就会导致性能问题。
- Vue框架封装了命令式代码,向开发者提供了声明式接口。既保证了框架的性能,也提高了可维护性。
编译时和运行时
- 纯编译时框架:在编译时将开发者编写的源代码,转换为可执行的代码形式。
- 纯运行时框架:没有编译过程,开发者编写的源代码,直接装载到内存中执行即可
- Vue框架是编译时加运行时。
- 开发者编写的Vue文件,会经过编译器编译后形成机器可识别的代码形式
- 将编译结果装载到内存中执行即可
Vue框架的核心
- 编译器:将我们编写的模板字符串,经过词法,语法分析构建为一个模板AST,转换为机器可识别的JS AST
- 渲染器:将JS AST传给渲染器,通过对该抽象语法树的遍历,生成机器可执行的代码。
总结
- Vue框架的设计者,通过对框架的定位和全局把控,做出了最优解。
- Vue框架是一个编译时加运行时的框架,底层采用命令式编程,接口采用声明式编程