美文网首页
vue 虚拟dom

vue 虚拟dom

作者: 张宪宇 | 来源:发表于2022-06-03 23:09 被阅读0次

vnode => dom虚拟 => 真是dom (vue 初始化渲染)

# 创建节点
function createElement(vnode){
  //目标对象 ul div
  let tag = vnode.tag;
  let attrs = vnode.attrs || {};
  let children = vnode.children || {};

  if(!tag) return null;
  let elem = document.createElement(tag);
  let attrName
  for(attrName in attrs){
    if(attrs.hasOwnProperty(attrName)){
      //给ele添加属性
      elem.setAttribute(attrName,attrs[attrName])
    }
  }
  //添加子元素
  children.forEach(childVnode => {
    //递归添加
    elem.appendChild(createElement(childVnode))
  });
  return elem;
}

更新节点

function upateChildren(vnode,newVnode){
  let children = vnode.childVnode || [];
  let newChildren = newVnode.children || [];

  children.forEach((childVnode,index)=>{
    let newChildVnode = newChildren[index];
    if(childVnode.tag === newChildVnode.tag){
      // 深层次对比 递归
      upateChildren(childVnode,newChildVnode)
    }else{
      replaceNode(childVnode,newChildVnode)
    }
  })
}

function replaceNode(){
  //......
}

相关文章

  • 学习笔记(十六)Vue.js源码剖析 - 虚拟DOM

    Vue.js源码剖析 - 虚拟DOM 虚拟DOM概念回顾 什么是虚拟DOM? 虚拟DOM(Virtual DOM)...

  • 2019-11-23

    vue虚拟DOM是什么?vue的虚拟DOM的用法 1、为什么需要虚拟DOM 前面我们从零开始写了一个简单的类Vue...

  • 【Vue】基础(虚拟DOM & 响应式原理)

    虚拟 DOM Vue 通过建立一个虚拟 DOM 来追踪自己要如何改变真实 DOM 在Vue中定义虚拟节点(VNod...

  • vue render函数

    render 函数 虚拟 DOM Vue 通过建立一个虚拟 DOM对真实 DOM 发生的变化保持追踪 Vue.js...

  • Vue 基础回顾

    Vue 基础结构 h函数:创建虚拟dom render:把h函数创建的虚拟dom返回 $mount:把虚拟dom转...

  • 【vue3源码】十二、认识虚拟DOM

    【vue3源码】十二、认识虚拟DOM 什么是虚拟DOM? 虚拟DOM(也可以称为vnode)描述了一个真实的DOM...

  • vue 2x源码分析(三)---虚拟dom

    以前用jq,我们都是直接操作dom,为什么要使用虚拟dom,虚拟dom的优势是什么,虚拟dom是如何实现的,vue...

  • vue 虚拟dom

    vnode => dom虚拟 => 真是dom (vue 初始化渲染) 更新节点

  • Vue之虚拟DOM

    Vue之虚拟DOM 为什么要用到虚拟DOM? 众所周知,DOM操作是JavaScript语言的硬伤。浏览器对DOM...

  • 虚拟dom

    vue执行 先去创建一个虚拟dom, 将生成的虚拟dom其渲染到页面。 虚拟dom是一个对象,能够表现出dom结构...

网友评论

      本文标题:vue 虚拟dom

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