Node.js开发仿知乎服务端 深入理解RESTful API

181 阅读1分钟

项目地址

const h = (tag, props, children) => {
  // vnode -> javascript对象 -> {}
  return {
    tag,
    props,
    children
  }
}

const mount = (vnode, container) => {
  // console.log("mount: ", vnode, container)
  // vnode -> element
  // 1.创建出真实的元素并且在vnode上面保存一份真实dom
  const el = vnode.el = document.createElement(vnode.tag)

  // 2.处理props
  if (vnode.props) {
    for (const key in vnode.props) {
      // console.log("key: ", key)
      const value = vnode.props[key]

      if (key.startsWith("on")) { // 对事件监听的边缘处理
        el.addEventListener(key.slice(2).toLowerCase(), value)
      } else {
        el.setAttribute(key, value)
      }
    }
  }