$mount() 方法
工程源码:
src/platforms/web/entry-runtime-with-compiler.js
mount() 方法并返回Vue.prototype.$mount = function (el) {
// 根据用户传入的 el 属性获取节点
el = el && query(el)
let vm = this;
//把节点放在 vm.$el 上方便后面使用
vm.$el = el;
let options = vm.$options;
let template
/**
* 编译权重:
* 优先看有没有 render 函数, 如果有就直接用
* 如果没有 render 函数就看有没有 template 模板
* 如果都没有就直接获取 el 的 outerHTML 作为渲染模板
*/
if (!options.render) {
if (!options.template) {
template = el.outerHTML
} else {
template = vm.$options.template
}
}
if (template) {
//用 template 生成 render 函数
let render = compileToFunctions(template)
options.render = render
}
//调用 mount 方法开始渲染页面。
return mount(this, el)
}
query 方法
function query (el) {
// 传入了 `#box` 字符串
if (typeof el === 'string') {
var selected = document.querySelector(el);