Vue中main.js为什么要用render注册App组件

为什么要用render(呈现,翻译)

//当你创建了Vue的脚手架,main.js文件中创建Vue实例对象就会出现以下一段代码
new Vue({
    el: '#app',
    render: h => h(App)
})

为什么这里要用render去注册App组件呢?

//常见的组件注册方式
new Vue({
    el: '#app',
     components: {
      	App
    },
})

当你用这段代码在脚手架环境下的main.js注册App组件的时候就会出现以下报错
在这里插入图片描述
这个报错的大概意思就是缺少一个解析模板的模板编译器

为什么不在脚手架环境下main.js用components注册组件就不会报错呢?
这是因为我们自己引入的Vue文件包含两大模块(Vue的核心功能(生命周期,处理事件…)+模板解析器)
然而脚手架给我们的引入的vue只包含了Vue的核心功能而没用模板解析器
此处通过Ctrl键+点击引入Vue的语句中的Vue地址找到Vue的配置文件夹然后打开package.json文件查看第6行代码此行代码就是你引入Vue文件的名字
在这里插入图片描述

这个文件就是精简版的Vue(缺少模板解析器)

为什么main.js不直接引入完整版的Vue?
1.省下内存空间(这个理由有点牵强但确实是这个样子)
2.我们项目完成后这个模板解析器就没有用了!所以模板解析器不需要一起进行打包。
为什么xxx.vue文件里面的template又可以解析呢?
Vue专门给我们引入了一个解析xxx.vue文件template插件在这里插入图片描述

项目文件最外层的package.json文件中第23行就是Vue给我们引入解析xxx.vue文件的插件

解决main.js引入精简版的vue无法解析模板的方法:
使用render函数

render函数的介绍:

render(function){
	return function('html标签名''标签内容''function')
}

//因为没有用到this所以可以用箭头函数精简render函数
render:(function)=>{return function('html标签名''标签内容''function')}
//注意冒号后的是render这个函数,这里的render是Vue实例对象的一个属性名
//又因为只有一个参数function与返回语句所以可以简写为以下形式
render:function=>function('html标签名''标签内容''function')
//最后App是一个变量因此function的参数可以直接写App
render:function=>function(App)

//这里的function可以改成h或任意名称
render:h=>h(App)
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值