通常我们在使用vue-cli初始化我们的Vue.js项目时,会问我们是使用RuntimeOnly版本还是Runtime+Compiler版本。让我们比较下面的两个版本。RuntimeOnly当我们使用RuntimeOnly版本的Vue.js时,通常需要使用webpack等vue-loader工具将.vue文件编译成JavaScript,因为是在编译阶段完成的,所以只包含Vue在运行时。js代码,所以代码量会比较轻。一般来说,RuntimeOnly版本是指发布到浏览器时没有模板版本。它是浏览器可以识别的渲染功能。我们平时在SPA中使用webpack打包的代码其实都是runtime-only代码,Vue会帮我们把模板编译成render函数。简而言之,runtimeonly版本不在运行时编译,而是离线编译(打包时编译)。Runtime+Compiler如果我们不预编译代码,而是使用Vue的template属性,传入一个字符串,就需要在客户端编译模板。编译器是使用的vue版本。在发布的时候,可以使用模板标签,vue会在运行时识别这些模板标签,帮我们把它们转换成render函数。也就是在vue运行的时候,注意vue在运行的时候是帮我们编译的,如下图://需要一个版本的编译器newVue({template:'
{{hi}}
'})//这种情况不需要newVue({render(h){returnh('div',this.hi)}})因为在Vue.js2.0中,最终的渲染是通过render函数完成的。如果写了模板属性,需要编译成render函数,那么这个编译过程会在运行时发生,所以需要有编译器的版本。显然,这个编译过程在性能上会有一定的损失,所以我们通常推荐使用Runtime-OnlyVue.js。