第一章 Vue框架该如何设计

67 阅读2分钟

设计的权衡

编程的范式

  • 命令式编程:完成某个功能的全部步骤由开发者编写
  • 声明式编程:完成某个功能的步骤开发者并不关心,只需要表达需要完成此功能
  • 举例:你对朋友说,我想看西游记
    • 命令式编程:我亲爱的朋友,你现在站起来往前走10步,打开电视,找到西游记,然后告诉我
    • 声明式编程:亲爱的,我要看西游记(如何完成由她自行决定,我们并不关心)
  • 很明显,命令式编程过于繁琐,声明式编程更友好
  • Vue框架内部正是命令式的编程,但是暴露给开发者的是声明式的接口,这样更加友好

性能和维护性

  • 命令式编程:完成功能的所有步骤由开发者决定,作为开发者我们清楚的知道当前情况最合适的执行过程,所以理论上可以做到极致的优化。但是所有步骤全部由开发者来维护。可维护性较差。
  • 声明式编程:完成功能的步骤开发者一概不知,具体实现过程及代码的健壮由框架来维护,作为开发者我们只关心需要的结果即可,维护性较好。但是框架底层为了实现功能,适配不同情况,需要许多额外代码,就会导致性能问题。
  • Vue框架封装了命令式代码,向开发者提供了声明式接口。既保证了框架的性能,也提高了可维护性。

编译时和运行时

  • 纯编译时框架:在编译时将开发者编写的源代码,转换为可执行的代码形式。
  • 纯运行时框架:没有编译过程,开发者编写的源代码,直接装载到内存中执行即可
  • Vue框架是编译时加运行时。
    • 开发者编写的Vue文件,会经过编译器编译后形成机器可识别的代码形式
    • 将编译结果装载到内存中执行即可

Vue框架的核心

  • 编译器:将我们编写的模板字符串,经过词法,语法分析构建为一个模板AST,转换为机器可识别的JS AST
  • 渲染器:将JS AST传给渲染器,通过对该抽象语法树的遍历,生成机器可执行的代码。

总结

  • Vue框架的设计者,通过对框架的定位和全局把控,做出了最优解。
  • Vue框架是一个编译时加运行时的框架,底层采用命令式编程,接口采用声明式编程