美文网首页
虚拟节点转真实节点

虚拟节点转真实节点

作者: 罗不错 | 来源:发表于2020-10-20 15:41 被阅读0次

    let vNode = [{
    tag: 'div',
    attr: {
    class: 'luo'
    },
    children: [{
    tag: 'span',
    attr: {
    id: 'jie',
    events: {
    onclick() {
    alert(1)
    }
    }
    },
    children: 'hello world !'
    }]
    }]
    let domOper = {
    insert(el, target) {
    el.appendChild(target)
    },
    createElement(tag) {
    return document.createElement(tag)
    },
    setAttribute(el, attrs) {
    Object.keys(attrs).forEach(key => {
    if (key == 'events') {
    let events = attrs[key]
    Object.keys(events).forEach(event => {
    el[event] = events[event]
    })
    } else {
    el.setAttribute(key, attrs[key])
    }
    })
    },
    setText(el, text) {
    el.innerText = text
    }
    }
    let container = document.getElementById('container')
    renderVNode(vNode, container)

                function renderVNode(vNode, container) {
    
                    if (Array.isArray(vNode)) {
                        vNode.forEach(item => {
                            let el = domOper.createElement(item.tag)
                            domOper.setAttribute(el, item.attr)
                            domOper.insert(container, el)
                            renderVNode(item.children, el)
                        })
                    } else if (typeof vNode == 'string') {
                        domOper.setText(container, vNode)
                    }
                }

    相关文章

      网友评论

          本文标题:虚拟节点转真实节点

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