Vue:render函数

render函数

当我们创建完vue脚手架后,在main的js,有这么一段代码:

new Vue({
  render: h => h(App),
}).$mount('#app')
})

上面一段代码是等同于下面:

new Vue({
	el:'#app',
	template:`<App></App>`,
	components:{App},
})

那为什么要第1种写法呢?问题就在于引入的vue的js文件,如下:

import Vue from 'vue'

这个实际上引入的是vue.runtime.esm.js,是精简版的vue文件不含模板解析器(vue.js才是完整版),不含模板解析器是解析不了组件里的template属性值的

因此通过render的方式替代模板解析器的作用,但和其不同的是:在开发时存在,但最终打包后是不存在的,减少空间占用

render最完整的写法如下:

  render(createElement){
    // createElement是一个函数,用于创建标签元素。传入App帮我们创建App标签
    return createElement(App);
  }

总结:
1.vue.js与vue.runtime.xxx.js的区别:
(1).vue.js是完整版的Vue,包含:核心功能+模板解析器。
(2).vue.runtime.xxx.js是运行版的Vue,只包含:核心功能;没有模板解析器。

	2.因为vue.runtime.xxx.js没有模板解析器,所以不能使用template配置项,需要使用
		render函数接收到的createElement函数去指定具体内容。
posted @ 2022-07-20 14:16  爱编程DE文兄  阅读(184)  评论(0编辑  收藏  举报