Skip to content

权衡的艺术

权衡的艺术

命令式和声明式编程

  • 命令式:关注过程,直接操作 dom
  • 声明式:关注结果,通过模板编写,根据虚拟 dom 判断增删改查

性能与可维护性

命令式与声明式:

  • 命令式: 只是直接修改的性能消耗

    命令式的性能 > 声明式的性能

  • 声明式: 需要找出差异 + 直接修改的性能消耗

    声明式的可维护性 > 命令式的可维护性(因为简单)

原生 js、innerHTML、虚拟 dom 比较:

  • 心智负担: 虚拟 dom < innerHTML < 原生 js
  • 性能: innerHTML < 虚拟 dom < 原生 js
  • 可维护性: 原生 js < innerHTML < 虚拟 dom

运行时和编译时

纯运行时、纯编译时以及两者都支持的框架各有什么特点?vue 采用哪种设计模式?

  • 纯运行时: 虚拟 dom 树 传递给 render 函数生成 dom 的过程
  • 纯编译: 开发写的 template 模板直接编译成原生 js,document.CreateELement...
  • 运行时 ➕ 编译:开发编写 template,编译器将 template 模板编译成虚拟 dom 树,然后通过运行 render 函数将虚拟 dom 树生成 dom
  • vue 采用编译+运行时的模式