当前位置: 首页 > news >正文

vnode 在 Vue 中的作用

vnode就是 Vue 中的 虚拟 dom 。
vnode 是怎么来的?
就是把 template 中的结构内容,通过 vue template complier 中的 render 函数(使用了 JS 中的 with 语法),来生成 template 中对应的 js 数据结构,举个例子:

<div id="div1" class="container"><p>vdom</p><ul style="font-size: 20px"><li>a</li></ul>
</div>

h 函数根据上面的模板内容就会生成下列 vdom:

{tag: 'div',props: {id: 'div1',class: 'container'},children:[{tag: 'p',children: 'vdom'},{tag: 'ul',props: {style: 'fontSize: 20px'},children:[{tag: 'li',children: 'a'}]}]
}

用 JS 模拟 DOM 结构,patch 到真实 DOM。

那么 vnode 的作用是什么呢?

  1. 默认对 模板中的内容 通过render函数,生成vnode; 响应式的 getter 对使用到的变量做监听操作;
  2. 修改data,和初始化的 模板 vnode 通过 diff 算法做对比,计算出最小的变更;
  3. 重新执行 render 函数,生成新的vnode;
  4. 通过 patch 补丁到初始化渲染的 dom 节点中

组件开发可不可以不用 template 呢
答案是可以的,vue 组件中可以使用 render 代替 template ;如下:

Vue.component('heading', {// template: `xxxx`,render: function (createElement) {return createElement('h' + this.level,[createElement('a', {attrs: {name: 'headerId',href: '#' + 'headerId'}}, 'this is a tag')])}
})

记录一下,回顾一下,如有不妥,望指正,thank you!

http://www.lryc.cn/news/7526.html

相关文章:

  • SQL语句实现找到一行中数据最大值(greatest)/最小值(least);mysql行转列
  • 记一次以小勃大,紧张刺激的渗透测试(2017年老文)
  • LeetCode 61. 旋转链表
  • 数据库(4)--视图的定义和使用
  • pandas表格并表(累加合并)
  • 汽车直营模式下OTD全流程
  • 如何在 Canvas 上实现图形拾取?
  • 适用于媒体行业的管理数据解决方案—— StorageGRID Webscale
  • Springboot+ElasticSearch构建博客检索系统-学习笔记01
  • vue3+element-plus el-descriptions 详情组件二次封装(vue3项目)
  • No.14新一代信息技术
  • 微信小程序开发(五)小程序代码组成2
  • 关于tensorboard --logdir=logs的报错解决办法记录
  • em,rem,px,rpx,vw,vh的区别与使用
  • Vue+node.js医院预约挂号信息管理系统vscode
  • Java真的不难(五十四)RabbitMQ的入门及使用
  • Unity | Script Hot Reload
  • 3|射频识别技术|第五讲:数据通信和编码技术|第九章:编码与调制|重点理解掌握传输介质中的有线传输介质
  • 【遇见青山】基于Redis的Feed流实现案例
  • 【芯片前端】一文搞定|寄存器组织生成与uvm ral_model环境全流程
  • Leetcode力扣秋招刷题路-0061
  • xilinx srio ip学习笔记之axistream接口
  • 轨迹误差评估指标[APE/RPE]和EVO
  • uni-app 消息推送功能UniPush
  • 面试题(二十六)场景应用
  • 密码技术在车联网安全中的应用与挑战
  • 富媒体数据管理解决方案:简化、优化、自动化
  • QT入门Input Widgets之QFontComboBox、QTextEdit、QPlainTextEdit、QDial、QKeySequenceEdit
  • Java企业级开发学习笔记
  • 【算法基础】(一)基础算法 ---高精度