Skip to content

Latest commit

 

History

History
15 lines (8 loc) · 1.07 KB

temp.md

File metadata and controls

15 lines (8 loc) · 1.07 KB

vue 如何解析模板?

?> Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。

?> 在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。

  • 模板就是一段字符串,非结构化的数据,没法分析。因此,第一步是将非结构化的模板字符串,转变成结构化的 JS 对象,抽象语法树,即 AST 。其实就是一个 JS 对象,这样就结构化了。

  • 第二步,将 AST 转换成一个 render 函数,步骤是先转换为一段函数体的字符串,然后再用new Function(...)生成函数。

  • 第三部,渲染时执行 render 函数,返回虚拟 DOM 对象,然后执行虚拟 DOM 的patch方法,渲染成真正的 html 。

参考资料:

VUE官网