vm.$mount的实现逻辑
在new Vue(options)之后,vue做了一系列的初始化过程,在init()函数最后进行了挂载操作。
if (vm.$options.el) {
vm.$mount(vm.$options.el)
}
vm.$mount方法在多个地方都有定义,如 src/platform/web/entry-runtime-with-compiler.js、src/platform/web/runtime/index.js、src/platform/weex/runtime/index.js。有这么多定义的原因是因为该方法是和平台、构建相关的。那么本次的分析主要基于entry-runtime-with-compiler.js版本。
runtime-only版本和runtime+compiler版本比较
- 首先比较两个版本在创建项目时的区别
runtime+compiler版本:
在初始化时带有compiler版本,会写上components和template选项。
runtime-only版本:
- runtime-only版本与runtime-compiler版本编译区别
runtime-only版本是去除了编译template部分的内容,所以它是非完整版的,它是利用vue-loader和webpack将vue文件进行编译成render函数,所以runtime-only版本打包后的提交会小。因此runtime-only版本是不能写template选项的。而runtime-compiler版本是可以写template选项的。 - runtime-compiler编译过程
template