在看尚硅谷的Vue课程的时候,发现他们初始化的项目中main.js中存在一段与自己创建不太一样的代码
//视频中的
new Vue({
render: h => h(App)
}).$mount('#app')
//自己创建的 vue-cil 版本是2.9.6
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
render在这里指的是渲染
这里的代码是使用了ES6 语法,若将其完整写出来则是
render: h => h(App)
//完整写法
render: function(h) {
return h(App)
}
而这里的 h 其实是替换了 createElement 这个名称,根据Vue.js 作者 Even You 的回复,这里的h来自术语"hyperscript"
即上面的完整写法又可以写成
render: function (createElement) {
return createElement(App);
}
这个render函数接收了一个createElement函数作为参数。
简单说,render函数在这里的功能是将createElement(App)中的App所含的模板渲染到页面上去。
这个render函数就是生成一个 VNode节点,render 函数得到这个 VNode 节点之后,返回给 Vue.js 的 mount 函数,渲染成真实 DOM 节点,并挂载到根节点上。
借助一位博主的图以方便理解render的一些功能(来源:Vue render函数)