题解 | #虚拟DOM#
const _createElm = vnode => { // 1.对于一个对象,如果tag属性不为undefined,则创建标签元素 // 2.如果children属性不为空数组,则递归调用_createElm函数创建元素 // 3.返回元素对象 // 4.如果tag属性为undefined,则创建文本节点并返回 let { tag, props, children, text } = vnode if (!tag) { // 1.返回文本节点 return document.createTextNode(text) } // 2.返回元素节点 let element = document.createElement(tag) Object.keys(props).forEach(prop => { // element.className = props[prop] element.setAttribute(prop, props[prop]) }) element.innerHTML = text if (vnode.children.length) { children.forEach(node => element.append(_createElm(node))) } return element }