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

虚拟DOM的理解

虚拟DOM的理解

在JavaScript中创建一个DOM节点对象时,我们通常会考虑tag(标签),props(属性),children(子节点)这三项基本属性

所以我们可以创建相应的对象及属性{tag,props,children}来把他们存储在内存中

然后再执行渲染,再把他渲染后添加到真实DOM上面去

下面是一个示例代码

class VNode {constructor(tag,props,children){this.tag = tagthis.props = propsthis.children = children}
}function createElement(tag,props,...children){return new VNode(tag,props,children)
}function render(vnode){if(typeof vnode==="string"){return  document.createTextNode(vnode)}const element = document.createElement(vnode.tag)for(const [key,value] of Object.entries(vnode.props||{})){element.setAttribute(key,value)}for(const child of vnode.children){element.appendChild(render(child))}return element
}
//然后就可以快速的传节点来进行渲染了

需要注意的点:

代码中用到了数组的解构赋值[key,value] of xxx可以把键值对数组的值结构出来放到keyvalue变量中

Object.entries()可以把对象的可枚举属性,转化成键值对数组

通常默认创建的对象属性都是可枚举的,不可枚举的属性创建如下:

Object.defineProperty(user,userName,{enumerable:false
})

可枚举属性可以通过for in语句进行遍历


http://www.mrgr.cn/news/83809.html

相关文章:

  • 【Linux】Linux基础命令(二)
  • css盒子水平垂直居中
  • Android 网络层相关介绍
  • 慧集通(DataLinkX)iPaaS集成平台-业务建模之业务对象(二)
  • 计算机网络(四)网络层
  • docker 自建rustdesk服务器测试
  • SimpleFOC01|基于STM32F103+CubeMX,移植核心的common代码
  • Easysearch Rollup 使用指南
  • SimpleFOC |SimpleFOC学习笔记汇总
  • 【高项】项目管理原则
  • “AI 自动化效能评估系统:开启企业高效发展新征程
  • 1/14 C++
  • 进程同步之信号量机制
  • 力扣 子集
  • 数据存储与信息技术领域 - 磁带技术:企业用磁带与音乐磁带
  • 图解Git——分支开发工作流《Pro Git》
  • 语音合成的预训练模型
  • 卡通风格渲染
  • BUUCTF:misc刷题记录4(会持续更新的)
  • 模之屋模型导入到UE5
  • 三相无刷电机控制|FOC理论04 - 克拉克变换 + 帕克变换的最终目标
  • 源码安装httpd2.4
  • Springboot + vue 小区物业管理系统
  • 1.14学习
  • 单独编译QT子模块
  • 三台 Centos7.9 中 Docker 部署 Redis 哨兵模式