【采访话题】Vue.js2.0独立构建与运行时构建(standalone)和运行时构建(runtime-only)两个版本可供选择的区别。在Vue.js1.0中,没有这样的版本差异。我应该使用哪个版本?这让我感到有些困惑。本着既知其然又知其所以然的精神,我决定研究两者之间的区别。Vue.js的官方教程是这样说的:Standalonebuildsincludecompilationandsupportfortemplateoptions。它还依赖于浏览器界面的存在,所以你不能用它来进行服务器端渲染。运行时构建不包括模板编译,并且不支持模板选项。runtimebuild,可以使用render选项,但是只对单文件组件有效,因为单文件组件的模板在build的时候就预编译到render函数中,runtimebuild只占独立构建的30%大小,只有16Kbmin+gzip大小。Vue.js的运行过程实际上包括两个步骤。第一步,编译器将字符串模板(template)编译成渲染函数(render),称为编译过程;第二步编译后的渲染函数实际上是在运行时调用的,称为运行过程。由于Vue.js1.0的编译过程需要依赖浏览器的DOM,因此将编译器与运行时分开是不可能(或无意义)的。所以在Vue.js1.0发行版中,编译器和运行时被打包在一起,都在浏览器端执行。但是从Vue.js2.0开始,为了支持服务端渲染(server-siderendering),编译器不能依赖DOM,所以编译器和运行时必须分离。这适用于独立构建(编译器+运行时)和运行时构建(仅运行时)。显然,运行时构建小于独立构建。在现代前端工程建设中,通常会使用vue-loader和vueify来预编译模板。在这种情况下,只需要打包运行时,而不是编译器,运行时构建就足够了。当然,如果您需要在前端使用模板选项动态编译模板,那么您仍然需要使用独立构建将编译器发送到浏览器。
