Vue中h函数和render函数的区别浅析

 更新时间:2025年06月14日 10:11:25   投稿:daisy  
这篇文章主要介绍了Vue中h函数和render函数的区别的相关资料,h函数是工具,负责创建节点, render函数是过程,负责组织节点并生成最终的虚拟DOM,文中通过代码介绍的非常详细,需要的朋友可以参考下

h 函数的作用

  • h 函数(即 createElement 函数)用于创建虚拟 DOM 节点
  • 它接收参数(如标签名、属性、子节点等),并返回一个虚拟 DOM 节点对象。
  • 你可以把 h 函数看作是一个“构建工具”,用来描述虚拟 DOM 的结构。

示例:

const vnode = h('div', { class: 'container' }, 'Hello World');
  • 这里,h 函数创建了一个虚拟 DOM 节点,表示 <div class="container">Hello World</div>

 render 函数的作用

  • render 函数是 Vue 组件的一个选项,用于定义如何生成虚拟 DOM
  • 它调用 h 函数来构建虚拟 DOM 节点,并返回最终的虚拟 DOM 树。
  • render 函数是真正执行生成虚拟 DOM 的地方,而 h 函数是 render 函数用来构建节点的工具。

示例:

export default {
  render(h) {
    return h('div', { class: 'container' }, 'Hello World');
  }
};
  • 在这个例子中,render 函数调用 h 函数生成虚拟 DOM,并返回结果。

两者的关系

  • h 函数:负责创建单个虚拟 DOM 节点。
  • render 函数:负责组织多个 h 函数的调用,生成完整的虚拟 DOM 树。

类比:

  • 如果把生成虚拟 DOM 比作盖房子:

    • h 函数是砖块、水泥等建筑材料。
    • render 函数是建筑师,决定如何使用这些材料盖房子。

总结

  • h 函数:用于构建虚拟 DOM 节点(单个节点)。
  • render 函数:调用 h 函数,生成完整的虚拟 DOM 树,并返回给 Vue。

换句话说:

  • h 函数是工具,负责创建节点。
  • render 函数是过程,负责组织节点并生成最终的虚拟 DOM。

 render 函数是生成虚拟 DOM 的“过程”,而 h 函数是生成虚拟 DOM 的“工具”。

到此这篇关于Vue中h函数和render函数区别的文章就介绍到这了,更多相关Vue h函数和render函数区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue3+vite中报错信息处理方法Error: Module “path“ has been externalized for browser compatibility...

    vue3+vite中报错信息处理方法Error: Module “path“ has&nb

    这篇文章主要介绍了vue3+vite中报错信息处理方法Error: Module “path“ has been externalized for browser compatibility...,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • vue的ssr服务端渲染示例详解

    vue的ssr服务端渲染示例详解

    这篇文章主要给大家介绍了关于vue的ssr服务端渲染的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • vue+element+Java实现批量删除功能

    vue+element+Java实现批量删除功能

    这篇文章主要介绍了vue+element+Java实现批量删除功能,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Vue路由跳转传参或者打开新页面跳转问题

    Vue路由跳转传参或者打开新页面跳转问题

    这篇文章主要介绍了Vue路由跳转传参或者打开新页面跳转问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Vue3 Teleport在打包后失效的深层原因与解决方案

    Vue3 Teleport在打包后失效的深层原因与解决方案

    Teleport是Vue3内置的核心组件,核心作用是将组件的部分模板渲染到 DOM 树的指定位置,但组件的逻辑关系(如父子通信、生命周期、响应式)完全不受影响,这篇文章主要介绍了Vue3 Teleport在打包后失效的深层原因与解决方案,需要的朋友可以参考下
    2026-03-03
  • vue Aes加解密实践

    vue Aes加解密实践

    文章主要讲述了在Vue项目中安装并使用crypto-js进行AES加解密的操作,提及了与RSA加密的不同,并提到因密钥长度问题可能需要修改源码,最后强调内容为个人经验,仅供参考
    2026-05-05
  • Mock.js在Vue项目中的使用小结

    Mock.js在Vue项目中的使用小结

    这篇文章主要介绍了Mock.js在Vue项目中的使用,在vue.config.js中配置devServer,在before属性中引入接口路由函数,详细步骤跟随小编通过本文学习吧
    2022-07-07
  • vue3的defineExpose宏函数是如何暴露方法给父组件使用

    vue3的defineExpose宏函数是如何暴露方法给父组件使用

    当子组件使用setup后,父组件就不能像vue2那样直接就可以访问子组件内的属性和方法,这个时候就需要在子组件内使用defineExpose宏函数来指定想要暴露出去的属性和方法,本文介绍vue3的defineExpose宏函数是如何暴露方法给父组件使用,需要的朋友可以参考下
    2024-05-05
  • vue获取DOM节点的常用方法

    vue获取DOM节点的常用方法

    这篇文章主要给大家介绍了vue获取DOM节点的常用方法,使用ref属性,使用$el属性,使用querySelector和querySelectorAll,使用$refs和querySelector,这几种方法,需要的朋友可以参考下
    2023-10-10
  • vue3中的Proxy一定要用Reflect的原因解析

    vue3中的Proxy一定要用Reflect的原因解析

    Reflect可以操作对象使用, proxy可以代理对象,但没有找到为啥有时一定要在Proxy代理方法中使用Reflect,这篇文章主要介绍了vue3中的Proxy一定要用Reflect的原因解析,需要的朋友可以参考下
    2023-04-04

最新评论