看了Vue 2.1.7版本的源码, 发如今打包Vue文件的时候, 能够经过不一样的配置项打包不一样的版本. vue
根据package.json里面的命令能够看到不一样的运行方式.
其中最主要的区别就是在入口文件webpack
是web-runtime-with-compiler.js 仍是 web-runtime.js.
这里就是运行时构建与 独立 构建的区别所在web
查看里面的源码能够发现vue-cli
Web-runtime-with-compiler.js 中重载了 web-runtime.js 的$mount()方法, 主要区别在与json
对options.template 选项进行了解析 => 成为render 函数, 这个步骤能够理解为编译过程
而运行时构建 对于用webpack + vue-loader 生成的项目来讲, 是在预编译阶段就进行了编译, 因此对于vue-cli生成的项目默认是使用运行时构建浏览器
因为 Vue.js 1.0 的编译过程须要依赖浏览器的 DOM,因此没法(或者说没有意义)将编译器和运行时分开。所以在 Vue.js 1.0 分发包中,编译器和运行时是打包在一块儿,都在浏览器端执行。
然而到了 Vue.js 2.0,为了支持服务端渲染(server-side rendering),编译器不能依赖于 DOM,因此必须将编译器和运行时分开。这就造成了独立构建(编译器 + 运行时)和运行时构建(仅运行时)。显而易见,运行时构建要小于独立构建。ide
http://hcysun.me/2017/03/03/V...
http://blog.csdn.net/zengyong...函数