先放一段代码:
const vm = new Vue({
el: "#app",
template: "<h2>{{msg}}</h2>",
render(createElement){ //如果有render,就执行render生成的元素,不渲染template了
return createElement('h1',{
class:'haha',
style:{
color:'red',
fontSize:'14px'
}
},[
'我是一个render生成的h1',
createElement('p', '我是一个p')
]);
},
data:{
msg: "hello"
}
});
挂载过程:
- 先去找有没有el,如果有el,就去看有没有template,如果有template,就拿template做模板,生成语法树,渲染,虚拟DOM,最后替换成真实的DOM。
- 如果没有template,则拿outerHTML作为模板,
div#app.outerHTML("<div id=‘app’>" 作为模板) - 如果没有el,则看有没有$mount
- 如果连$mount 都没有,那他就彻底不管了
可参照上面的代码来看该过程