首页IT科技vue render ref(vue中的render函数(通俗、易懂))

vue render ref(vue中的render函数(通俗、易懂))

时间2025-05-02 16:51:49分类IT科技浏览4207
导读:一、初步认识render函数 import Vue...

一            、初步认识render函数

import Vue from vue import App from ./App Vue.config.productionTip = false new Vue({ el: #app, render: h => h(App) })

在使用脚手架创建vue项目的过程            ,我们很容易看到render这个函数                  ,相对于其他标签      ,我们对于render还是比较陌生的      ,因此写下这篇文章你我共同理解            。

二                  、为什么使用render函数

VUE推荐在绝大多数情况下使用template来创建我们的HTML                  。然而在一些场景中                  ,我们真的需要JavaScript的完全编程的能力            ,这就是render函数      ,它比template更接近编译器      。(这是官方的话)

简单来说                  ,我们为什么要使用render函数呢?? 便是因为我们最经常使用的一个引入      。 import Vue from "vue";

这一个引入你看似没有任何问题            ,但问题恰恰就是出在这                  。在不同版本的vue中,有vue.jsvue.runtime.xxx.js这两种js文件            。其中(1)vue.js是完整版的vue                  ,包含核心功能+模板解析器      。(2)vue.runtime.xxx.js是运行版vue                  ,只包含核心功能,没有模板解析器                  。

VUE开发者为了让我们打包的文件能尽可能小一点            ,在上述引入的是运行版vue            。因为vue.runtime.xxx.js没有模板解析器                  ,所以不能使用template配置项      ,这时候就需要使用render函数去接收到的createElement函数去指定具体内容            ,创建html模板。

三      、render函数的解析

render 函数即渲染函数                  ,它是个函数      ,它的参数 createElement 也是个函数                  。

上边的代码中 render: h => h(App)       ,这是 ES6的箭头函数的写法                  ,可以把 h 当作 createElement 的别名                  。所以这段代码其实相当于:

render: function (createElement) { return createElement(App) }

这个函数的作用就是生成一个 VNode节点            ,render 函数得到这个 VNode 节点之后      ,返回给 Vue.js 的 mount 函数                  ,渲染成真实 DOM 节点            ,并挂载到根节点上。

createElement 函数的返回值是 VNode(即:虚拟节点)

有关对 VNode的介绍可以看这篇博客:VNode简介

createElement 函数的3个参数

一个 HTML 标签字符串,组件选项对象                  ,或者解析上述任何一种的一个 async 异步函数            。类型:String | Object | Function                  。必需      。 一个包含模板相关属性的数据对象                  ,你可以在 template 中使用这些特性            。类型:Object                  。可选      。 子虚拟节点 (VNodes),由 createElement() 构建而成            ,也可以使用字符串来生成“文本虚拟节点            ”      。类型:String | Array                  。可选            。 new Vue({ el: #app, render:function (createElement) { //1.普通用法 // createElement(标签                  ,{属性}      ,[内容]) return createElement("h2",{class:"box"},[hello,createElement("button",["按钮"])]) } })

同时createElement也可以传进去一个组件            ,因此

render: h => h(App)

等同于

render:function (createElement) { return createElement(App) }

render函数就到此结束了      。

声明:本站所有文章                  ,如无特殊说明或标注      ,均为本站原创发布                  。任何个人或组织      ,在未征得本站同意时                  ,禁止复制            、盗用                  、采集      、发布本站内容到任何网站      、书籍等各类媒体平台            。如若本站内容侵犯了原著者的合法权益            ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
帝国理工大学(没授权的帝国cms作为商用行吗) 多模态感知(情感计算——多模态情感识别)