Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template 更接近编译器。 在 HTML 层, 我们决定这样定义组件接口:通过传入不同的level 1-6 生成h1-h6标签,和使用slot生成内容
Hello world!
/**
* 全局注册child组件,注意template如果值以 # 开始,则它用作选项符,将使用匹配元素的 innerHTML 作为模板。常用的技巧是用
* 这里使用template不是最好的选择,
* 一、代码冗长
* 二、在不同的标题插入内容需要重复使用slot
* 三、由于组件必须有根元素,所以标题和内容被包裹在一个无用的div中,比如
hello world
*/
Vue.component('child', {
template: '#child-template',
props: {
level: {
type: Number,
required: true
}
},
data: function() {
return {
a: 1
}
}
})
new Vue({
el:"#div1"
})
我们尝试使用render函数实现上面的例子,注意使用render函数,template 选项将被忽略。 createElement接收3个参数:
第一个参数可以是HTML标签名,组件或者函数都可以;此参数是必须的;
第二个为数据对象{Object}(可选);
第三个为子节点{String | Array}(可选),多个子节点[createElem