• 浅谈Vue中render函数


     首先我们引入的vue并不是一个完整的,而是残缺版的vue(没有模板解析器)

    那如何证明?

    翻译如下: 

     大概意思是说功能不全,没有模板解析器。并且提供建议给你:1.使用render函数 2.引入带有模板解析器的vue(完整的vue),那意思就是说vue并没有引入完整?为什么?

        我们就需要去依赖的地方看看到底有没有完整引入。由于我们在引入的时候,地址直接写的就是vue,但是vue下还有很多路径

     module的意思就是如果使用的es6的模块化引入方式,就使用   dist/vue.runtime.esm.js

    import的确是es6的引入方式。这里面就是残缺版的没有模板解析器的vue。

    如何解决?

    render(createElement){

            这个函数有返回值,需要return 并且这个参数createElement是一个函数,该函数可创建具体的节点//

            return createElement('span','我是span')

            }

    那他和正常的默认生成的还是有区别的,我们先看一下常规的render函数

    仅仅只是一行render:h=>h(App)

    我们可以根据上方代码写成箭头函数并简写形式(仅有一个参数去掉括号,return去掉改为一行)

    render:createElement => createElement('span','我是span')        

     接下来将参数改成h或者任意字母就和上图相似了

    render:h=>h('span','我是span')

    于是我们发现这样就显示出来了,如下图↓        ↓        ↓        ↓       

     

     那我们为什么不采用报错提示中的第二种方式引入完整的vue呢?

    vue是由两部分组成的,

            1:vue核心:包含生命周期,处理事件...

            2.   模板解析器

    如果合在一起,模板解析器体积占总体积的1/3,webpack在进行打包时会生成一个大的文件夹,本身模板解析器是不需要打包的,因为webpack已经将.vue文件变成了html,js,css,解析器就不再需要了。

    问题来了,为什么我们创建了一个app节点而且不需要加值就可以显示出来内容呢?

     为啥template放在组件里就可以被解析呢???这是因为有一个插件所解决的

     总结:

            vue.js和vue.runtime.xxx.js的区别

            (1)vue.js是完整版的Vue。包含:核心功能+模板解析器

            (2)vue.runtime.xxx.js是运行版的Vue,只包含核心功能

    因为vue.runtime.xxx.js没有模板解析器,所以不能使用template配置项,需要使用render函数接收到的createElement函数去指定具体内容

  • 相关阅读:
    从预训练到通用智能(AGI)的观察和思考
    [附源码]java毕业设计基于Java的快递驿站管理系统
    2024年孝感市建筑类中级职称申报资料私企VS国企
    机器学习介绍(下)
    ElasticSearch深度分页问题如何解决
    基于 kubernetes+docker构建高可用、高性能的 web 、CICD集群
    【Linux操作系统】-- 多线程(三)-- 线程池+单例模式
    ChatGPT 插件 “Consensus“ 实现论文搜索功能;数据工程在语言建模中的重要性
    Java项目:SSM停车场管理系统
    C#中.NET 7.0 Windows窗体应用通过EF访问已有数据库并实现追加、删除、修改、插入记录
  • 原文地址:https://blog.csdn.net/guhanfengdu/article/details/126405605