登录

javascript - 现在很多js框架提倡虚拟dom,为什么虚拟dom不能在浏览器层实现

现在很多的js框架为了提高运行性能,会提出一个叫virtual dom的概念,最有名的是facebook的react。研读了一下,virtual dom的原理基本是在dom操作层之上用js另外模拟dom以达到减少dom操作的目的。我觉得很受启发,但细想一下,这一层如果是在浏览器中完成岂不是更快,为什么要在js库中实现呢?有什么具体原因么?求大神解答

# JavaScript
黄舟黄舟2184 天前477 次浏览

全部回复(4) 我要回复

  • 大家讲道理

    大家讲道理2017-04-10 17:14:28

    浏览器提供商想什么我不清楚,大致猜想大概会有这样一些考虑:

    浏览器一般提供底层的 API,virtual DOM 算是很应用层面的技术了。

    一般修改浏览器的 API 会涉及到制定和修改标准,然而制定标准很麻烦,多种 virtual DOM 并存的情况下不好统一。即便 React 的 virtual DOM 也一直在升级和调整。

    Facebook 没能控制一款浏览器,推不动。

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 17:14:28

    首先更正你的一个观点:虚拟DOM并不比原生DOM更快,react快是相对于其他框架来说的。

    此外,原生DOM也有批量添加节点的接口(DocumentFragment)。并且浏览器为了提高渲染效率,在每次刷新时只更新变化的部分而不是整个窗口。

    说到底,虚拟DOM只适合在react这种富客户端的UI框架里搞,而不具有普适性。更一般的情况现有的原生DOM已经能满足了。

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-10 17:14:28

    问题你要有把握让每一个人都是用这样一个浏览器

    回复
    0
  • ringa_lee

    ringa_lee2017-04-10 17:14:28

    即便浏览器支持虚拟dom出也不是新的接口
    为了向前兼容 浏览器做虚拟dom的可能性不太大
    何况为了兼容没虚拟dom的浏览器,就算给你虚拟dom接口你敢用?
    属性、尺寸访问的操作 很多都会触发重渲染 这个时候就看哪个浏览器优化的好渲染的地方少了

    回复
    0
  • 取消回复发送