1、 initMixin(Vue)
2、把模板转化成 对应的渲染函数 => 虚拟dom
import { compileToFunction } from "./compiler/index";
export function initMixin(Vue){
Vue.prototype._init=function(options){
const vm=this;
vm.$options=options;
initState(vm);
if(vm.$options.el){
vm.$mount(vm.$options.el);
}
}
Vue.prototype.$mount=function(el){
const vm=this;
const options =vm.$options;
el=document.querySelector(el);
// 把模板转化成 对应的渲染函数 => 虚拟dom
// vnode => diff 更新虚拟dom
console.log(el);
// 没有render 用template,目前render
if(!options.render){
let template=options.template;
// 用户也没有传递template 就取el的内容作为模板
if(!template && el){
template=el.outerHTML;
let render=compileToFunction(template);
options.render=render;
}
// options.render; 就是渲染函数
}
}
}