1 runtime compiler:
template —经过parse渲染—>ast(abstract syntax tree 抽象语法树)—经过编译—>render函数—>翻译成virtual dom 虚拟dom树—>(真实dom)渲染UI界面。
如果你需要在客户端编译模板 (比如传入一个字符串给 template 选项,或挂载到一个元素上并以其 DOM 内部的 HTML 作为模板),就将需要加上编译器,即完整版。字面意思为运行时+编译器,是不在打包时进行编译的,是在客户端(浏览器)运行时进行编译的,所以要使用带编译器的完整版本
2 runtime only:直接render函数开始。
只包含运行时版本,即进行了预编译,在最终打好的包里实际上是已经编译好的,在浏览器中可直接运行。
当使用 vue-loader 或 vueify 的时候,*.vue 文件内部的模板会在构建时预编译成 JavaScript。你在最终打好的包里实际上是不需要编译器的,所以只用运行时版本即可。
故2only比1compiler轻6kb。
那么.vue中的template是由谁处理的呢?
是由vue-template-compiler(开发时依赖)解析成render函数的。然后我们再js里引用的时候其实是个对象了。