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

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

时间2025-09-19 02:00:30分类IT科技浏览6106
导读:一、初步认识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
网关到网络有问题如何解决(网关常见问题) 软件打开提示运行时间错误(Win7浏览器显示“出现了运行时间错误是否调试”)