vue中的render函数

vue中的render函数render 函数跟 template 一样都是创建 html 模板的 但是有些场景中用 template 实现起来代码冗长繁琐而且有大量重复 这时候就可以用 render 函数


1. 前言

在使用 vue-cli2 脚手架构建项目时,如果选择了Runtime-only模式,那么在main.js文件中会有下面一段代码:

有关Runtime + Compiler的介绍可以看这篇博客:Vue中 Runtime + Compiler 和 Runtime-only 两种模式含义和区别

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

2. 分析render函数

2.1 render 函数的作用

Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,真的需要 JavaScript 的完全编程的能力。这时可以用渲染函数,它比模板更接近编译器。

render 函数和 template 一样都是创建 html 模板的,但是有些场景中用 template 实现起来代码冗长繁琐而且有大量重复,这时候就可以用 render 函数。

2.2 render 函数讲解

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

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

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

2.3 createElement 函数讲解

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


createElement 函数的3个参数

  • 一个 HTML 标签字符串,组件选项对象,或者解析上述任何一种的一个 async 异步函数。类型:String | Object | Function。必需。
  • 一个包含模板相关属性的数据对象,你可以在 template 中使用这些特性。类型:Object。可选。
  • 子虚拟节点 (VNodes),由 createElement() 构建而成,也可以使用字符串来生成“文本虚拟节点”。类型:String | Array。可选。

实现createElement函数

1、普通用法

// main.js文件 new Vue({ 
        el: '#app', render:function (createElement) { 
        //1.普通用法 // createElement(标签,{属性},[内容]) return createElement("h2",{ 
       class:"box"},['hello',createElement("button",["按钮"])]) } }) 
// ... let Cpn = { 
        template:`

{ {message}}

`
, data(){ return { message:"我是组件" } } } new Vue({ el: '#app', render:function (createElement) { //2.使用组件 return createElement(Cpn) } })
import Vue from 'vue' import App from './App' Vue.config.productionTip = false new Vue({ 
        el: '#app', render:function (createElement) { 
        return createElement(App) } }) 

3. 参考资料

render渲染函数 — Vue.js官网

关于Vue中 render: h => h(App) 的具体含义的理解

终于搞懂了vue 的 render 函数

前端学习交流,群内学习讨论的氛围很好,大佬云集,期待您的加入: 点击加入

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226098.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午7:50
下一篇 2026年3月17日 上午7:50


相关推荐

  • mysql函数索引_MySQL 函数索引 (Functional indexes)

    mysql函数索引_MySQL 函数索引 (Functional indexes)函数索引示例:CREATETABLEt1(col1INT,col2INT,INDEXfunc_index((ABS(col1))));CREATEINDEXidx1ONt1((col1+col2));CREATEINDEXidx2ONt1((col1+col2),(col1-col2),col1);ALTERTABLEt1ADDINDE…

    2025年5月28日
    7
  • 2022年双非上岸北京理工大学软件工程经验

    2022年双非上岸北京理工大学软件工程经验感想很久之前就想写一篇文章来记录自己这段考研的辛苦历程了,感谢这一路陪伴我的朋友对我的鼓励支持,软工今年是前30去校本部,后35名去唐山研究院,软工相比于前几年来说一直在缩招,20年招95个,21年招74个,今年招65个,所以23今年想报的要做好会缩招的准备,我最终是去了唐山研究院,但是这对我本科双非的学生来说已经知足了。今年2022年被称为考研元年,难度可以说是极其高了,想要上岸不容易,从如今考研的形式来看,未来考研将会越来越难,希望学弟学妹们仔细认真的选择院校,可以通过关注一些公众号像王道论坛,

    2022年6月14日
    500
  • linux常用命令大全新手入门(零基础自学葫芦丝快速入门篇)

    一、学习前准备帮助文档Linux命令大全(★★★),可以在上面找到你要查找的linux命令Linux命令大全|菜鸟教程Linux教程|菜鸟教程Tab补全Tab补全是非常有用的一个功能,可以用来自动补全命令或文件名,省时准确。未输入状态下连按两次Tab列出所有可用命令已输入部分命令名或文件名,按Tab进行自动补全,多用你就肯定会喜欢的了。…

    2022年4月18日
    64
  • Android传输数据时加密详解

    Android传输数据时加密详解Android传输数据时加密详解ONEGoal,ONEPassion!——————–MD5加密———————-MD5即Message-DigestAlgorithm5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有

    2022年5月17日
    40
  • random.nextInt()的值重复

    random.nextInt()的值重复1、当random.netInt(数字)中数字小的时候,比较容易重复。这个随机是有规律的。2、可以用math.random()替代具体使用如下:如果是个位数intaa=(int)(Math.random()*11);如果是多位,doubledd=Math.random();  dd加上0和点总共19位。可以用long转一下…

    2022年7月21日
    21
  • wasserstein 距离

    wasserstein 距离注明 直观理解而已 正儿八经的严谨证明看最下面的参考 EarthMover sDistance 推土机距离的例子 有一堆土的分布是 PrPrP r 其随机变量是 xxx 现在要求把这堆土挪动成为分布 PgPgP g 其随机变量是 yyy 图上是 P P P theta 这样做的方法很多 那么做最小功的挪动该是什么 这是一个优化问题对应着的最优解是 这里 Pr Pg

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号