?> 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 。
参考资料: