完整版:同时包含编译器和运行时的版本。
编译器compiler:用来将模板字符串编译成为 JavaScript 渲染函数的代码。
运行时版本runtime:用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。(即完整版阉割掉了编译器代码)
如果你需要在客户端编译模板 (比如传入一个字符串给 template 选项,或挂载到一个元素上并以其 DOM 内部的 HTML 作为模板),就将需要加上编译器,即完整版:
// 需要编译器
new Vue({
template: '<div>{{ hi }}</div>'
})
// 不需要编译器
new Vue({
render (h) {
return h('div', this.hi)
}
})
开发时
当使用 vue-loader 或 vueify 的时候,*.vue 文件内部的模板会在构建时预编译成 JavaScript。你在最终打好的包里实际上是不需要编译器的,所以只用运行时版本即可。
因为运行时版本相比完整版体积要小大约 30%,应该尽可能使用这个版本。
所以开放时我们用运行时版本(runtime,webpack和vue/cli默认引入该版本)。
为了保证开发体验,开发时可以在
.vue文件中直接书写html,而不写render(h)函数,打包工具的vue-loader加载器会自动将html文件转化成render(h)函数.