javascript 虚拟DOM转化成真实的DOM节点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 虚拟DOM转化成真实的DOM节点相关的知识,希望对你有一定的参考价值。

let vdom = {
    tag:"ul",
    attrs:{
        key:"111",
        "class":"ulclass"
    },
    innerText:"innerText", // 不属于子节点的文字
    children:[
        {
            tag:"li",
            attrs:{
                id:"aaa"
            },
            innerText:"1111"
        },{
            tag:"li",
            attrs:{
                id:"bbb"
            },
            innerText:"222"
        }
    ]
}

function vdomToDom(vdom){

    //创建根节点
    let realdom = document.createElement(vdom.tag)

    //设置属性
    for(key in vdom.attrs){
        realdom.setAttribute(key,vdom.attrs[key])
    }

    //设置节点内的文字
    if(realdom.innerText != undefined){   // 为什么不能用 if(realdom.innerText) ?? 奇
        realdom.innerText = vdom.innerText
    }

    //添加子节点
    if(vdom.children){
        vdom.children.forEach(function (childVdom) {
            realdom.appendChild(vdomToDom(childVdom))
        })
    }

    return realdom
}

document.body.appendChild(vdomToDom(vdom))

以上是关于javascript 虚拟DOM转化成真实的DOM节点的主要内容,如果未能解决你的问题,请参考以下文章

react 虚拟dom

《关于实现一个函数把真实dom转换成虚拟dom原来是这么一回事》

虚拟dom到真实dom

深度思考 jsx虚拟 dom

React篇(010)-为什么虚拟 dom 会提高性能?

虚拟DOM(Virtual DOM)