import vnode from "./vnode.js"
import createElement from "./createElement.js"
export default function (oldVnode, newVnode) {
if (oldVnode.sel == undefined || oldVnode.sel == '') {
oldVnode = vnode(oldVnode.tagName.toLowerCase(), {}, [], undefined, oldVnode)
}
if (oldVnode.key === newVnode.key && oldVnode.sel === newVnode.sel) {
console.log('同一个节点')
} else {
const newVnodeDom = createElement(newVnode)
if (oldVnode.elm.parentElement && newVnodeDom) {
oldVnode.elm.parentElement.insertBefore(newVnodeDom, oldVnode.elm)
}
oldVnode.elm.parentElement.removeChild(oldVnode.elm)
}
}
export default function createElement(vnode) {
let domNode = document.createElement(vnode.sel);
if (vnode.text != '' && (vnode.children == undefined || vnode.children.children == 0)) {
domNode.innerText = vnode.text;
} else if (Array.isArray(vnode.children) && vnode.children.length > 0){
let i = 0
while (i < vnode.children.length) {
const Chi = vnode.children[i]
console.log(Chi)
const chDOM = createElement(Chi)
domNode.appendChild(chDOM)
i++
}
}
vnode.elm = domNode
return vnode.elm
}
``
![8ef70ee838ad77b6dd83751b5092d5d6.png](en-resource: