Virtual DOM

  • Virtual DOM是什么
  • 真实DOM成员
  • 引入原因
  • 作用

Virtual DOM是什么

定义: 普通的js对象来描述DOM对象,不是真实的DOM,顾名思义,称为虚拟DOM

真实DOM成员

let _el = document.querySelector('#app')let _s = ''for (const key in _el) {_s += key + ','}console.log(_s, '#app')

使用Virtual DOM描述真实的DOM,如下示例:

{sel: 'div',data: {},children: undefined,text: 'Hello,this is Virtual-DOM',elm: undefined,key: undefined
}

引入原因

  • 手动操作DOM较麻烦(需要手写原生js处理DOM元素逻辑),需考虑浏览器的兼容性问题,虽然有jquery等库简化DOM操作,但是随着项目的复杂度,DOM操作复杂上升
  • 为了简化DOM的复杂度操作出现了MVVM框架,MVVM框架解决了视图与状态的同步问题
  • 为了简化视图的操作可以使用模板引擎,但是模板引擎没有解决跟踪状态变化的问题
  • Virtual DOM可以当状态改变时不需要立即更新DOM,只需要创建一个虚拟树来描述DOM,Virtual DOM内部使用diff算法有效更新DOM

  • 依照Virtual-DOM(https://github.com/Matt-Esch/virtual-dom)官方说法:

手动 DOM 操作很麻烦,而且很难跟踪之前的 DOM 状态。这个问题的一个解决方案是编写你的代码,就像你在状态改变时重新创建整个 DOM 一样。当然,如果您每次应用程序状态更改时都重新创建整个 DOM,您的应用程序将非常缓慢并且您的输入字段将失去焦点。

virtual-dom 是一组模块,旨在为您的应用程序提供一种表示 DOM 的声明性方式。因此,无需在应用程序状态更改时更新 DOM,只需创建一个虚拟树或 VTree,它看起来就像您想要的 DOM 状态。然后,virtual-dom 将弄清楚如何在不重新创建所有 DOM 节点的情况下有效地使 DOM 看起来像这样。

virtual-dom 允许您通过创建视图的完整 VTree 然后有效地修补 DOM 以使其看起来与您描述的完全一样,从而在状态发生变化时更新视图。这导致将手动 DOM 操作和先前状态跟踪排除在您的应用程序代码之外,促进了 Web 应用程序的干净和可维护的呈现逻辑。

作用

  1. 维护视图和状态的关系
  2. 复杂视图情况下提升渲染性能
  3. 除了渲染DOM以外,还可以实现SSR(Nuxt.js/Next.js)、原生应用(Weex/React Native)、小程序(mpvue/uni-app)等

原创申明:

本人博客:https://blog.csdn.net/weixin_44617364
转载说明:与我说明,务必注明来源,附带本人博客链接,多谢!

Vue 源码学习—Virtual DOM(虚拟 DOM)相关推荐

  1. Vue源码学习 - 组件化一 createComponent

    Vue源码学习 - 组件化一 createComponent 组件化 createComponent 构造子类构造函数 安装组件钩子函数 实例化 VNode 总结 学习内容和文章内容来自 黄轶老师 黄 ...

  2. Vue源码学习 - 准备工作

    Vue源码学习 - 准备工作 准备工作 认识Flow 为什么用 Flow Flow 的工作方式 类型推断 类型注释 数组 类和对象 null Flow 在 Vue.js 源码中的应用 flow实践 总 ...

  3. VUE源码学习第一篇--前言

    一.目的 前端技术的发展,现在以vue,react,angular为代表的MVVM模式以成为主流,这三个框架大有三分天下之势.react和angular有facebook与谷歌背书,而vue是以一己之 ...

  4. vue源码学习--vue源码学习入门

    本文为开始学习vue源码的思路整理.在拿到vue项目源码的之后看到那些项目中的文件夹,会很困惑,不知道每个文件夹内的世界,怎么变换,怎样的魔力,最后产生了vue框架.学习源码也无从学起.我解决了这些困 ...

  5. Vue源码学习之Computed与Watcher原理

    前言  computed与watch是我们在vue中常用的操作,computed是一个惰性求值观察者,具有缓存性,只有当依赖发生变化,第一次访问computed属性,才会计算新的值.而watch则是当 ...

  6. Vue源码学习 - 组件化(三) 合并配置

    Vue源码学习 - 组件化(三) 合并配置 合并配置 外部调用场景 组件场景 总结 学习内容和文章内容来自 黄轶老师 黄轶老师的慕课网视频教程地址:<Vue.js2.0 源码揭秘>. 黄轶 ...

  7. Vue源码学习之initInjections和initProvide

    Vue源码学习之initInjections和initProvide 在进行源码阅读之前先让我们了解一个概念:provide/inject,这个是Vue在2.2.0版本新增的一个属性,按照Vue官网的 ...

  8. [Vue源码分析] Virtual DOM

    最近小组有个关于vue virtual dom的分享会,提前准备一下- 读前须知: 本文章涉及源码版本为Vue 2.5.2,文中涉及到源码部分,解释直接写在源码中(中文部分为本人添加),截图尽量放完整 ...

  9. 【Vue.js源码解析 二】-- 虚拟 DOM

    前言 笔记来源:拉勾教育 大前端高薪训练营 阅读建议:建议通过左侧导航栏进行阅读 虚拟 DOM 基本介绍 什么是虚拟 DOM 虚拟 DOM(Virtual DOM) 是使用 JavaScript 对象 ...

最新文章

  1. 2021-2027全球与中国经颅磁刺激仪(TMS)市场现状及未来发展趋势
  2. eclipse常用快捷键Get;set;
  3. python中复制n次字符串_在Python中查找字符串中多次出现的字符串
  4. SICP 1.20经验
  5. 分类算法中的ROC与PR指标
  6. 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型...
  7. BZOJ 1640: [Usaco2007 Nov]Best Cow Line 队列变换
  8. Dapper基础用法
  9. 波形包络提取与峰值提取_一个简单的波形包络提取算法
  10. oracle自定义数组
  11. LaTeX常用符号与语法
  12. 2022年聚合工艺考试试卷及聚合工艺考试总结
  13. vue项目中引入vuex------初试
  14. HTML5制作诗歌锦集,【热门】诗歌作文锦集六篇
  15. Android——Intent总结
  16. 计算机外设配件的主要相关参数有哪些,举例说明计算机外设主要有哪些设备?...
  17. php代码审计之bluecms
  18. ZOJ3716 Ribbon Gymnastics(贪心)
  19. 去百度还是去创新工厂?信开复还是信彦宏?
  20. 所有的事情都会趋于平淡

热门文章

  1. 基于案例的软件构造教程第二章课后题答案
  2. Installing NetBeans IDE with Fortran compilers
  3. FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(二)
  4. ECSHOP用户中心显示订单状态插件|待付款|待确认收货|待发货的订单数提示
  5. Flutter传感器
  6. Mac入门--通过homebrew下载过慢问题
  7. 远程预付费集中抄表系统如何运行?
  8. 嗨购严选app【央视】
  9. 团队角色解析的最佳做法
  10. 使用LSTM生成文本