Vue中main.js里的render是干什么的

以下是我在学习Vue时,对main.js中render函数的个人理解,可供初级小白参考,大神可以直接请了,哈哈哈

好,进入正题

在打开利用Vue脚手架创建的项目文件main.js之前,我们猜想它应该长这样

实际上的mian.js如下

 

跟我们想的不一样,那这里的render又是什么呢?

我们可以先假设,如果按照我们猜想的写法,会发生什么?

报错了 ,意料之中

 

 

那么我们来分析一下错误提示

错误提示我们引入的是非完整版的Vue,缺少模板解析器,并给出了两种解决方法

我们先来试试第二种方法,引入完整版的Vue,我们怎么知道引入的是不是完整版的?完整版的又在哪呢?

看代码

实际上我们引入的是vue.runtime.esm.js,是精简版的Vue,它与完整版的不同就是少了模板解析器,那完整版的Vue哪里呢?

 

引入完整版的Vue我们只要改一行代码就行

import Vue from 'vue/dist/vue'

 运行成功!第二种方法可行

接下来我们再来试一下第一种办法,使用非完整版的Vue,把render函数写上去

  同样运行成功


 

此时我们发现,这不就是Vue一开始采用的解决方法吗?

从vue官网中知道,vue提供了两个版本,完整版和只包含运行时版,差别是完整版包含编译器,就是将template模板编译成AST,再转化为render函数的过程,而运行时版不包含模板解析器,因此必须提供render函数。总而言之就是为了确保页面能正常渲染。

那么问题来了,既然有完整版,为什么不直接用?为什么要用不包含模板解析器的版本?

因为,没必要。

当我们的项目编写完成,经过webpack打包之后,模板解析器就没有用了,我们没必要再留着它,所以一开始引入不包含模板解析器的版本即可。

举个例子,就像你要铺瓷砖,你需要瓷砖和工人,工作完成之后,得到的是铺好的瓷砖,此时工人就没必要再留在你家了。这里的工人就相当于模板解析器,我们没必要把工人也买回家对不对?

对于这个render函数一般只会在main.js中使用,在一些组件中都不会去使用,因为组件中写得都是template标签,vue专门设置了一个库去解析它。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值