18-mini-vue element

实现初始化 element

  1. 走 render 方法时,调用 patch ,区分 element 和 component
  2. 遇到 element, 代码如下
js 复制代码
// renderer.ts
function patch(vnode, container) {
  // 对类型进行区分
  if (typeof vnode.type === 'string') { 
    processElement(vnode, container)
  } else if (isObject(vnode.type)) {
    processComponent(vnode, container)
  }
}
function processElement(vnode, container) {
  mountElement(vnode, container)
}
function mountElement(vnode, container) {
  const { type, props, children } = vnode
  const el = document.createElement(type) 
  if (typeof children === 'string') {
    el.textContent = children
  } else if (Array.isArray(children)) {
    mountChildren(children, el)
  }
  for (let key in props) {
    let val = props[key]
    el.setAttribute(key, val)
  }
  container.append(el)
}
function mountChildren(children, el) {
  children.forEach(vnode => {
    patch(vnode, el)
  })
}
相关推荐
阿珊和她的猫10 小时前
React 路由:构建单页面应用的导航系统
前端·react.js·状态模式
Amumu1213811 小时前
Vue脚手架(二)
前端·javascript·vue.js
花间相见11 小时前
【LangChain】—— Prompt、Model、Chain与多模型执行链
前端·langchain·prompt
lichenyang45311 小时前
从零开始构建 React 文档系统 - 完整实现指南
前端·javascript·react.js
比特森林探险记11 小时前
Hooks、状态管理
前端·javascript·react.js
landonVM12 小时前
Linux 上搭建 Web 服务器
linux·服务器·前端
css趣多多12 小时前
路由全局守卫
前端
AI视觉网奇12 小时前
huggingface-cli 安装笔记2026
前端·笔记
比特森林探险记12 小时前
组件通信 与 ⏳ 生命周期
前端·javascript·vue.js
2301_7925800012 小时前
xuepso
java·服务器·前端