手写vue将虚拟 Dom 转化为真实 Dom

vue将虚拟 Dom 转化为真实 Dom

{
  tag: 'DIV',
  attrs:{
  id:'app'
  },
  children: [
    {
      tag: 'SPAN',
      children: [
        { tag: 'A', children: [] }
      ]
    },
    {
      tag: 'SPAN',
      children: [
        { tag: 'A', children: [] },
        { tag: 'A', children: [] }
      ]
    }
  ]
}

把上面虚拟Dom转化成下方真实Dom

<div id="app">
  <span>
    <a></a>
  </span>
  <span>
    <a></a>
    <a></a>
  </span>
</div>
 

实现

// 真正的渲染函数
function _render(vnode) {
  // 如果是数字类型转化为字符串
  if (typeof vnode === "number") {
    vnode = String(vnode);
  }
  // 字符串类型直接就是文本节点
  if (typeof vnode === "string") {
    return document.createTextNode(vnode);
  }
  // 普通DOM
  const dom = document.createElement(vnode.tag);
  if (vnode.attrs) {
    // 遍历属性
    Object.keys(vnode.attrs).forEach((key) => {
      const value = vnode.attrs[key];
      dom.setAttribute(key, value);
    });
  }
  // 子数组进行递归操作
  vnode.children.forEach((child) => dom.appendChild(_render(child)));
  return dom;
}

相关推荐

  1. vue虚拟 Dom 转化真实 Dom

    2024-03-16 14:24:03       23 阅读
  2. 虚拟dom

    2024-03-16 14:24:03       32 阅读
  3. <span style='color:red;'>虚拟</span><span style='color:red;'>DOM</span>

    虚拟DOM

    2024-03-16 14:24:03      22 阅读
  4. 虚拟 DOM

    2024-03-16 14:24:03       41 阅读
  5. 面试题:React的真实DOM虚拟DOM的区别

    2024-03-16 14:24:03       11 阅读
  6. Vue原理解析】之虚拟DOM

    2024-03-16 14:24:03       38 阅读
  7. Vue原理解析】之虚拟DOM

    2024-03-16 14:24:03       40 阅读
  8. vue 虚拟DOM的优劣说明

    2024-03-16 14:24:03       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-16 14:24:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-16 14:24:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-16 14:24:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-16 14:24:03       20 阅读

热门阅读

  1. 学习总结2

    2024-03-16 14:24:03       19 阅读
  2. 解决C#连接MySQL数据库报错: SslMode=None;

    2024-03-16 14:24:03       20 阅读
  3. 工大智信智能听诊器:科技创新,赋能医疗

    2024-03-16 14:24:03       20 阅读
  4. 【DP+贪心】跳跃游戏

    2024-03-16 14:24:03       21 阅读
  5. SPA富应用开发

    2024-03-16 14:24:03       18 阅读
  6. CSS中三栏布局的实现

    2024-03-16 14:24:03       20 阅读