首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏黄Java的地盘

    如何实现一个虚拟 DOM——virtual-dom 源码分析

    概述 本文通过对virtual-dom的源码进行阅读和分析,针对Virtual DOM的结构和相关的Diff算法进行讲解,让读者能够对整个数据结构以及相关的Diff算法有一定的了解。 本文的主要内容为: Virtual DOM的结构 Virtual DOM的Diff算法 注:这个Virtual DOM的实现并不是React Virtual DOM的源码,而是基于virtual-dom

    80820发布于 2019-03-20
  • 来自专栏大史住在大前端

    javascript基础修炼(10)——VirtualDOM和基本DFS

    Virtual-DOM是什么 Virtual-DOM,即虚拟DOM树。 但是DOM读写是非常耗性能的,很容易触发不必要的重绘和重排,为了更好地处理DOM操作,Virtual-DOM技术就诞生了。 Virtual-DOM技术是前端高性能的基石,它是真实document对象的抽象,通过对比新旧Virtual-DOM的区别,找出发生变化的DOM节点,再利用算法得到相对更合理的DOM节点修改方案,最终再将方案应用在 主流前端SPA框架都离不开【Virtual-DOM模型 + DOM-Diff算法 + 生命周期钩子】这样的核心模型。 2. 使用DFS从Virtual-DOM生成DOM 至此我们完成了模板的编译,也得到了Virtual-DOM对象,但它似乎并没有什么用处,毕竟我们已经完成了对模板的解析,渲染出页面没什么问题,其实Virtual-DOM

    63410发布于 2018-12-19
  • 来自专栏大史住在大前端

    javascript基础修炼(11)——DOM-DIFF的实现

    再谈从Virtual-Dom生成真实DOM 在上一篇博文《javascript基础修炼(10)——VirtualDOM和基本DFS》中第三节演示了关于如何利用Virtual-DOM的树结构生成真实DOM 许多读者留言表示对如何从Virtual-Dom得到真实的DOM节点仍然很困惑。 所以本节会先为Element类增加渲染方法,演示如何将Virtual-Dom转换为真正的DOM节点并渲染在页面上。 接下来,就正式进入通过DOM-Diff来检测Virtual-DOM的变化以及更新视图的后续步骤。 二. DOM-Diff的目的 在经历了一些操作或其他影响后,Virtual-DOM上的一些节点发生了变化,此时页面上的真实DOM节点是与旧的DOM树保持一致的(因为旧的DOM树就是依据旧的Virtual-DOM DOM-Diff的简单实现 4.1 期望效果 我们先来构建两棵有差异的Virtual-DOM,模拟虚拟DOM的状态变更: <!

    90720发布于 2018-12-25
  • 来自专栏全栈前端精选

    从Preact中了解React组件和hooks基本原理

    Virtual-DOM 其实就是一颗对象树,没有什么特别的,这个对象树最终要映射到图形对象. Virtual-DOM 比较核心的是它的diff算法. 它不是每一次都全量渲染整个 Virtual-DOM 树,而是支持接收两颗 Virtual-DOM 对象树(一个更新前,一个更新后), 通过 diff 算法计算出两颗 Virtual-DOM 树差异的地方 当初网上把 React 吹得多么牛逼, 一些小白就会觉得 Virtual-DOM 很吊,JQuery 弱爆了。 那相对于他们 Virtual-DOM 的买点可能就是更高的性能了, 另外 Virtual-DOM 在渲染层上面的抽象更加彻底, 不再耦合于 DOM 本身,比如可以渲染为 ReactNative,PDF, 从技术上看组件是一个自定义的元素类型,可以声明组件的输入(props)、有自己的生命周期和状态以及方法、最终输出 Virtual-DOM 对象树, 作为应用 Virtual-DOM 树的一个分支存在.

    1.2K40发布于 2019-11-07
  • 来自专栏前端技术地图

    [技术地图] Preact

    Virtual-DOM 比较核心的是它的diff算法. 它不是每一次都全量渲染整个 Virtual-DOM 树,而是支持接收两颗 Virtual-DOM 对象树(一个更新前,一个更新后), 通过 diff 算法计算出两颗 Virtual-DOM 树差异的地方 当初网上把 React 吹得多么牛逼, 一些小白就会觉得 Virtual-DOM 很吊,JQuery 弱爆了。 那相对于他们 Virtual-DOM 的买点可能就是更高的性能了, 另外 Virtual-DOM 在渲染层上面的抽象更加彻底, 不再耦合于 DOM 本身,比如可以渲染为 ReactNative,PDF, 从技术上看组件是一个自定义的元素类型,可以声明组件的输入(props)、有自己的生命周期和状态以及方法、最终输出 Virtual-DOM 对象树, 作为应用 Virtual-DOM 树的一个分支存在.

    1.7K30发布于 2019-08-07
  • 来自专栏大史住在大前端

    一统江湖的大前端(7)React.js-从开发者到工程师

    关键词1——Virtual DOM Virtual-DOM,即虚拟DOM树。 为了更好地处理DOM操作,提升项目性能,Virtual-DOM技术就诞生了。 Virtual-DOM技术是前端高性能的基石,它是真实document对象的抽象,通过对比新旧Virtual-DOM的区别,找出发生变化的DOM节点,再利用算法得到最优的DOM节点修改方案,最终再将方案应用在 你完全可以在自己实现了Virtual-DOM以后,尝试将其转换为真实的DOM转换到页面上。 深度解析Virtual-Dom的实现算法 https://github.com/livoras/blog/issues/13 讲述Virtual-DOM的非常棒的一篇博文,值得一读,毕竟Virtual-DOM

    1K31发布于 2018-10-09
  • 来自专栏星流全栈

    Announcing Vue.js 2.0

    现在的渲染层基于一个轻量级的 virtual-DOM 实现,在大多数场景下初试化渲染速度和内存消耗都提升了 2~4 倍 (详见这里的 benchmarks)。 不是普通的 Virtual-DOM 现在 virtual-DOM 有点让人听腻了,因为社区里有太多种实现,但是 Vue 2.0 的实现有与众不同的地方。 在 Vue 2.0 中,你可以继续使用熟悉的模板语法,但当你觉得受限制的时候,你也可以直接写底层的 virtual-DOM 代码,只需用一个 render 函数替换掉 template 选项。 流式服务端渲染 既然迁移到了 virtual-DOM,Vue 2.0 自然支持服务端渲染和客户端的 hydration(直接使用服务端渲染的 DOM 元素)。

    1.4K40发布于 2018-06-01
  • 来自专栏京程一灯

    使用虚拟dom和JavaScript构建完全响应式的UI框架

    我们可以使用虚拟dom算法的纯实现,就像你可以在@MatthewEsch的github仓库(https://github.com/Matt-Esch/virtual-dom)中找到的这个一样。 我们可以通过一个数组渲染出一个简单的列表: import { create, h } from 'virtual-dom'; const render = (state) => { const import { patch, create, diff } from 'virtual-dom'; import { render } from '.

    1.7K30发布于 2019-03-28
  • 来自专栏高级前端工程师学习必备

    react源码解析5.jsx&核心api

    config,把除了保留属性外的其他config赋值给props 把children处理后赋值给props.children 处理defaultProps 调用ReactElement返回一个jsx对象(virtual-dom 总结:jsx是React.createElement的语法糖,jsx通过babel转化成React.createElement函数,React.createElement执行之后返回jsx对象,也叫virtual-dom

    63320发布于 2021-06-04
  • 来自专栏高级前端工程师必备

    react源码解析5.jsx&核心api

    config,把除了保留属性外的其他config赋值给props 把children处理后赋值给props.children 处理defaultProps 调用ReactElement返回一个jsx对象(virtual-dom 总结:jsx是React.createElement的语法糖,jsx通过babel转化成React.createElement函数,React.createElement执行之后返回jsx对象,也叫virtual-dom

    57720编辑于 2021-12-04
  • 来自专栏前后两端不设限

    虚拟DOM及其实现

    除了 Virtual DOM 外,React 还实现了其他的特性,为了专注于 Virtual DOM,我另外找了两个比较 Virtual DOM 来学习: • virtual-dom https: 在 virtual-dom 中,给 Virtual Node 声明了对应的类 VirtualNode,基本是用于存储数据,包括: • tagName • properties • children • virtual-dom 和 Snabbdom 都提供了函数调用的方式来创建 Virtual Tree,这个过程就是渲染了: var vTree = h('div', [ h('span', 'hello virtual-dom 有明确的两步操作,首先 diff,然后 patch: var newTree = render(count) var patches = diff(tree, newTree) 6 References https://github.com/Matt-Esch/virtual-dom/blob/master/vtree/diff.js

    58020编辑于 2022-12-24
  • 来自专栏Node.js开发

    白话虚拟dom

    : 'container'}, [ el('h1', {style: 'color: blue'}, ['simple virtal dom']), el('p', ['Hello, virtual-dom ': 'container'}, [ el('h1', {style: 'color: red'}, ['simple virtal dom']), el('p', ['Hello, virtual-dom

    93231发布于 2019-07-19
  • 来自专栏bug收集

    vue 自定义MessageBox 消息框组件

    使用 h 的理由,官方解释是: It comes from the term “hyperscript”, which is commonly used in many virtual-dom implementations 它来自单词 hyperscript,这个单词通常用在 virtual-dom 的实现中。

    2.6K10编辑于 2022-07-22
  • 来自专栏前端桃园

    虚拟 DOM 到底是什么?(长文建议收藏)

    从 h 函数说起 观察主流的虚拟 DOM 库(snabbdom、virtual-dom),通常都有一个 h 函数,也就是 React 中的 React.createElement,以及 Vue 中的 render diff 算法的进化 关于 diff 算法的最经典的就是 Matt Esch 的 virtual-dom,以及 snabbdom(被整合进 vue 2.0中)。 ? 最开始出现的是 virtual-dom 这个库,是大家好奇 React 为什么这么快而搞鼓出来的。它的实现是非常学院风格,通过深度优先搜索与 in-order tree 来实现高效的 diff 。 引用自司徒正美的文章 去哪儿网迷你React的研发心得 下面我们就来讲讲这几个虚拟 DOM 库 diff 算法的具体实现: 1️⃣ virtual-dom virtual-dom 作为虚拟 DOM 开天辟地的作品 virtual-dom 在一开始就进行了这方面的尝试,对子节点添加 key 值,通过 key 值的对比,来判断子节点是否进行了移动。

    5.8K43发布于 2019-07-08
  • 来自专栏静晴轩

    Vue Webpack 组件化开发实践

    Virtual-DOM?Templates, JSX, or Hyperscript? 组件缓存?…..擦,好多东西需要学习!哇,好多好东西可以运用!痛并幸福着,生活就是这样。 其次,也可以基于此对 vue 开发前端项目,做更为深入细节探讨;譬如组件设计,热加载,路由以及 vue2.0 那别致的 Virtual-DOM 等等。

    96750发布于 2018-03-27
  • 来自专栏张家辉的树屋

    react 列表渲染基础和技巧

    } return ( {usersElements} ) } key 非常重要 当我们需要改变 div 顺序的时候,我们都知道 react 的高效是依赖着 virtual-DOM

    87630发布于 2021-02-02
  • 来自专栏react源码分析

    react源码解析--jsx&核心api

    的源码中做了如下几件事处理config,把除了保留属性外的其他config赋值给props把children处理后赋值给props.children处理defaultProps调用ReactElement返回一个jsx对象(virtual-dom 它用来表示这个组件是类组件总结:jsx是React.createElement的语法糖,jsx通过babel转化成React.createElement函数,React.createElement执行之后返回jsx对象,也叫virtual-dom

    53620编辑于 2022-12-12
  • 来自专栏用户8771298的专栏

    react源码解析5.jsx&核心api

    config,把除了保留属性外的其他config赋值给props 把children处理后赋值给props.children 处理defaultProps 调用ReactElement返回一个jsx对象(virtual-dom 总结:jsx是React.createElement的语法糖,jsx通过babel转化成React.createElement函数,React.createElement执行之后返回jsx对象,也叫virtual-dom

    58020编辑于 2021-11-30
  • 来自专栏react源码分析

    react源码解析5.jsx&核心api_2023-02-06

    的源码中做了如下几件事处理config,把除了保留属性外的其他config赋值给props把children处理后赋值给props.children处理defaultProps调用ReactElement返回一个jsx对象(virtual-dom 它用来表示这个组件是类组件总结:jsx是React.createElement的语法糖,jsx通过babel转化成React.createElement函数,React.createElement执行之后返回jsx对象,也叫virtual-dom

    41510编辑于 2023-02-06
  • 来自专栏爬虫技术学习

    GitHub 上的顶级项目都是做什么的?(一)

    和 React 一样,Vue 也使用了 Virtual-DOM 技术来提高性能。 facebook/react facebook 推出的一个前端框架,特点是每个组件的 HTML/JS/CSS 组合在一起,使用 Virtual-DOM 渲染。

    1.6K21编辑于 2023-02-10
领券