首先Vue先初始化所有的实例成员和静态成员,生成Vue实例
再初始化完成后调用Vue实例的init方法,整个Vue首次渲染的初始化方法
在Vue的init方法中调用了$mount vm.$mount()
一、vm.$mount()
第一个$mount是入口文件的$mount 文件位置为src\platforms\web\entry-runtime-with-complier.js 这个文件中$mount的核心作用是把模板编译成render函数,首先它会判断是否传入了render选项,如果没有传入的话会去获取传入template选项,如果template也没有的话会把el中的内容作为模板,然后把模板编译成render函数,在此中是通过complierToFuntion()帮助把模板编译成render函数的,当编译成render函数后,它会存在Vue实例options中 options.render = render
二、vm.$mount() (runtime中)
第二个$mount方法 文件位置在src\platforms\web\runtime.js中 此时 它会执行mountComponent() 在这个方法中首先会重新获取el ,如果Vue是运行时版本不会走这个入口 会从runtime\index中的$mount中重新获取el
三、mountComponent(this,el)
这个方法在src\core\instance\lifeCycle.js中定义,在这个方法中首先判断是否有render选项,如果没有render选项还传入了模板,并且当前是开发环境的话会发送一个警告因为运行时版本不支持编译器,再然后出发了beforeMount这个函数,也就是说实在挂载之前,再往下定义updateComponent函数此处仅仅是定义&#x