>

美洲杯在线投注_2019美洲杯外围投注[投注官网]

热门关键词: 美洲杯在线投注,2019美洲杯外围投注[投注官网]

探究Vue.js 2.0新增的虚拟DOM

- 编辑:美洲杯在线投注 -

探究Vue.js 2.0新增的虚拟DOM

你可能早就已经听说了 Vue.js 2.0。一个主要的令人兴奋的新特性就是更新页面的"虚拟DOM"的加入。

Virtual DOM是什么?**
*篮球世界杯在线投注,*

虚拟 DOM 可以做什么?

在之前,React和Ember早就开始用虚拟DOM技术来提高页面更新的速度了。 若想了解它是如何工作的,就要先认清这几个概念:

React 和 Ember 都使用了虚拟DOM来提升页面的刷新速度。为了理解其如何工作,让我们先讨论一下几个概念:

1.更新DOM是非常昂贵的操作

更新DOM的花费时间非常长

当我们使用Javascript来修改我们的页面,浏览器已经做了一些工作,以找到DOM节点进行更改,例如:

当我们使用 JavaScript 来改变页面的时候,浏览器不得不做一些工作来找到需要的DOM节点,并且做出类似这样的改变:

document.getElementById('myId').appendChild(myNewNode);
document.getElementById('myId').appendChild(myNewNode);

在现代的应用中,会有成千上万数量个DOM节点。所以因更新的时候产生的计算非常昂贵。琐碎且频繁的更新会使页面缓慢,同时这也是不可避免的。

在如今的应用程序的DOM中大概有成千上万的节点,因此更新所花费的时间就更长了。有很多不可避免的很小很频繁的更新拖慢了页面的速度。

2.我们可以用JavaScript对象来代替DOM节点

我们可以使用 JavaScript 将DOM节点虚拟化表示

DOM节点在HTML文档中的表现通常是这样的:

在一个HTML中,DOM节点通常表示如下:

<ul id='myId'>
 <li>Item 1</li>
 <li>Item 2</li>
<ul>
<ul id='myId'>
<li>Item 1</li>
<li>Item 2</li>
<ul>

DOM节点也可以表示为一个JavaScript对象,就像这样:

DOM 节点也可以表示 JavaScript 中的对象,像这样:

//用Javascript代码表示DOM节点的伪代码
Let domNode = {
 tag: 'ul'
 attributes: { id: 'myId' }
 children: [
//这里是 li
 ]
};
// Pseudo-code of a DOM node represented as Javascript
Let domNode = {
tag: 'ul'
attributes: { id: 'myId' }
children: [
// where the LI's would go
]
};

这就是虚拟的DOM节点,很好理解吧。

这就是我们的“虚拟”DOM。

3.更新虚拟节点, 并不昂贵贵

更新虚拟节点的开销不大

//更新虚拟DOM的代码
domNode.children.push('<ul>Item 3</ul>');
// This might be how we update the virtual DOM
domNode.children.push('<ul>Item 3</ul>');

如果我们用一个虚拟DOM,而不是直接调用像.getElementById的方法,这样只操作JavaScript对象,这样是相当便宜的。

如果我们使用虚拟DOM,而不是直接在代码中调用类似 .getElementById 的 DOM API 方法,操作就会像改变 JS 对象一样非常的简单省时。

然后,再把更改的部分更新到真正的DOM,方法如下:

接下来,就是同步的把我们做的改变更新到真实DOM 中去,我们使用了一个很有效率的函数:

//这个方法是调用DOM API来更改真正DOM的
//它会分批执行从而获取更高的效率
sync(originalDomNode, domNode);
// This function would call the DOM API and make changes
// to the "real" DOM. It would do it in batches and with
// more efficiency than it would with arbitrary updates.
sync(originalDomNode, domNode);

Vue.js在2.0 版本中引入虚拟DOM是一个正确的选择吗 ?

本文由计算机教程发布,转载请注明来源:探究Vue.js 2.0新增的虚拟DOM