Vue.js的运行过程实际上包含两步。第一步,编译器将字符串模板(template)编译为渲染函数(render),称之为编译过程;第二步,运行时实际调用编译的渲染函数,称之为运行过程。
由于Vue.js1.0的编译过程需要依赖浏览器的DOM,所以无法(或者说没有意义)将编译器和运行时分开。因此在Vue.js1.0分发包中,编译器和运行时是打包在一起,都在浏览器端执行。
然而到了Vue.js2.0,为了支持服务端渲染(server-siderendering),编译器不能依赖于DOM,所以必须将编译器和运行时分开。这就形成了独立构建(编译器+运行时)和运行时构建(仅运行时)。显而易见,运行时构建要小于独立构建。
在现代前端工程构建中,通常会使用vue-loader和vueify预编译模板。在这种情况下,只需要打包运行时,而不需要打包编译器,运行时构建即可满足所需。当然,如果你需要在前端使用template选项实时编译模板,那么还是需要使用独立构建将编译器发送到浏览器。