美文网首页
实现根据虚拟dom生成dom节点的方法

实现根据虚拟dom生成dom节点的方法

作者: jluemmmm | 来源:发表于2021-03-06 19:09 被阅读0次
console.log('s')

{/* <ul>
  0
  <li>1</li>
  <li>2</li>
  <li>3</li>
<ul> */}

let vdom = {
  el: '',
  tag: 'ul',
  content: 0,
  attribute: {},
  props: {},
  children: [
    {
      el: '',
      tag: '',
      content: 0,
      isTextNode: true,
    },
    {
      el: '',
      tag: 'li',
      content: '',
      children: [
        {
          el: '',
          tag: 'li',
          content: 1,
          isTextNode: true,
        },
        {
          el: '',
          tag: 'div',
          content: 'hhhh'
        },
        {
          el: '',
          tag: 'div',
          content: 'qqqq',
          isTextNode: true
        }
      ]
    },
    {
      el: '',
      tag: 'li',
      content: 2
    },
    {
      el: '',
      tag: 'li',
      content: 3
    },
  ],
  parents: []
}

function transformVdomToElement(data) {
  let { ele, children, tag } = data
  ele = document.createElement(tag)
  for(let i = 0; i < children.length; i++) {
    let child = children[i]
    let cEle
    if(child.isTextNode) {
      cEle = document.createTextNode(child.content)
    } else {
      // console.log(child)
      if(child.children && child.children.length > 0) {
        cEle = transformVdomToElement(child)
        // console.log(cEle)
      } else {
        cEle = document.createElement(child.tag)
        cEle.innerHTML = child.content
      }
    }
    ele.appendChild(cEle)
  }
  console.log(ele)
  return ele
}

let div = transformVdomToElement(vdom)
document.querySelector('.main').appendChild(div)

相关文章

  • 实现根据虚拟dom生成dom节点的方法

  • React diff算法

    React根据JS对象构造的元素生成虚拟Dom树,对比虚拟Dom节点的变化来渲染真正的Dom树 因为传统Dom树的...

  • Vue虚拟Dom与diff算法原理

    什么是虚拟DOM? 真实的元素节点: 为什么使用虚拟DOM? 虚拟DOM的作用是什么? 虚拟DOM和真实DOM的区...

  • 当数据发生变化时,vue是怎么更新节点的?

    我们先根据真实DOM生成一颗virtual DOM,当virtual DOM某个节点的数据改变后会生成一个新的Vn...

  • 实现一个简易的虚拟DOM

    虚拟DOM 虚拟DOM用原生的JavaScript模拟实现了DOM结构,.我们通过操作这个虚拟DOM树来实现对页面...

  • react中的虚拟dom

    jsx->createElement->虚拟dom(js对象)->真实的dom 生成虚拟dom的时机:setSta...

  • vue-diff算法

    虚拟DOM(Virtual Dom),也就是我们常说的虚拟节点,是用JS对象来模拟真实DOM中的节点,该对象包含了...

  • reactive

    虚拟dom节点 通过javaScript 来虚拟dom 。通过虚拟的dom 来找到那些需要局部跟新的东西,这样可以...

  • HTML DOM

    HTML DOM 一、HTML DOM 节点 1.HTML DOM 节点 根据 W3C 的 HTML DOM 标准...

  • vue知识点-3--diff算法 vnode

    虚拟dom是通过状态生成一个虚拟节点树,然后使用虚拟节点数进行渲染,在渲染之前,会使用新生成的虚拟节点数和上一个上...

网友评论

      本文标题:实现根据虚拟dom生成dom节点的方法

      本文链接:https://www.haomeiwen.com/subject/pmssqltx.html