• 技术文章 >web前端 >Vue.js

    聊聊什么是虚拟dom?vue为什么采用vdom?

    青灯夜游青灯夜游2022-04-06 14:12:20转载193
    本篇文章带大家聊聊vue中的虚拟DOM,介绍一下什么是虚拟dom、引入vdom的好处、vue 为什么采用 vdom,希望对大家有所帮助!

    现有框架几乎都引入了虚拟 DOM 来对真实 DOM 进行抽象,也就是现在大家所熟知的 VNode 和 VDOM,那么为 什么需要引⼊虚拟 DOM 呢?本文围绕这个疑问来解答即可!(学习视频分享:vuejs入门教程

    1. 虚拟dom是什么

    虚拟dom顾名思义就是虚拟的dom对象,它本身就是⼀个 JavaScript 对象,只不过它是通过不同的属性去 描述⼀个视图结构。

    2. 引入vdom的好处

    1. 将真实元素节点抽象成 VNode,有效减少直接操作 dom 次数,从而提高程序性能

    2. 方便实现跨平台

    补充:vue 为什么采用 vdom?

    综上,Virtual DOM 在性能上的收益并不是最主要的,更重要的是它使得 Vue 具备了现代框架应有的高级特性。

    3. vdom如何生成,又如何成为真实dom

    在vue中我们常常会为组件编写模板 - template, 这个模板会被编译器 - compiler编译为渲 染函数,在接下来的挂载(mount)过程中会调用render函数,返回的对象就是虚拟dom。但它们还不是真正的dom,所以会在后续的patch过程中进⼀步转化为dom。

    1.png

    4. 在后续的diff中的作用

    挂载过程结束后,vue程序进入更新流程。如果某些响应式数据发生变化,将会引起组件重新render,此时就会生成新的vdom,和上一次的渲染结果diff就能得到变化的地方,从而转换为最小量的dom操作,高效更新视图。

    源码直达

    vnode定义:https://github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/vnode.ts#L127-L128

    [创建vnode]:

    createElementBlock:https://github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/vnode.ts#L291-L292

    createVnode:https://github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/vnode.ts#L486-L487

    首次调用时刻:https://github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/apiCreateApp.ts#L283-L284

    mount:https://github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/renderer.ts#L1171-L1172

    (学习视频分享:web前端

    以上就是聊聊什么是虚拟dom?vue为什么采用vdom?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除
    专题推荐:vue 虚拟dom vdom
    上一篇:这个vue3无限滚动组件,支持百万量级! 下一篇:认识一下vue中的模板语法,聊聊容器和实例的关系
    Web大前端开发直播班

    相关文章推荐

    • 总结分享:建立VuePress博客后,10 个必做的优化!• 对比一下Vue指令v-show 和 v-if,聊聊使用场景• 手把手带你了解Vue中怎么使用filters过滤器?2种用法浅析• 【吐血总结】20+个好用的 Vue 组件库,快来收藏!• 这个vue3无限滚动组件,支持百万量级!

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网