最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

探究Vue.js 2.0新增的虛擬DOM

 更新時間:2016年10月20日 10:16:57   作者:QAQMiao  
vue.js 2.0大家對此并不陌生吧。最令人興奮的是更新頁面的"虛擬DOM"的加入。那么對于虛擬 DOM 可以做什么呢?今天小編通過本文給大家解答下

你可能早就已經(jīng)聽說了 Vue.js 2.0。一個主要的令人興奮的新特性就是更新頁面的"虛擬DOM"的加入。

虛擬 DOM 可以做什么?

React 和 Ember 都使用了虛擬DOM來提升頁面的刷新速度。為了理解其如何工作,讓我們先討論一下幾個概念:

更新DOM的花費時間非常長

當(dāng)我們使用 JavaScript 來改變頁面的時候,瀏覽器不得不做一些工作來找到需要的DOM節(jié)點,并且做出類似這樣的改變:

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

在如今的應(yīng)用程序的DOM中大概有成千上萬的節(jié)點,因此更新所花費的時間就更長了。有很多不可避免的很小很頻繁的更新拖慢了頁面的速度。

我們可以使用 JavaScript 將DOM節(jié)點虛擬化表示

在一個HTML中,DOM節(jié)點通常表示如下:

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

DOM 節(jié)點也可以表示 JavaScript 中的對象,像這樣:

// Pseudo-code of a DOM node represented as Javascript
Let domNode = {
tag: 'ul'
attributes: { id: 'myId' }
children: [
// where the LI's would go
]
};

這就是我們的“虛擬”DOM。

更新虛擬節(jié)點的開銷不大

// This might be how we update the virtual DOM
domNode.children.push('<ul>Item 3</ul>');

如果我們使用虛擬DOM,而不是直接在代碼中調(diào)用類似 .getElementById 的 DOM API 方法,操作就會像改變 JS 對象一樣非常的簡單省時。

接下來,就是同步的把我們做的改變更新到真實DOM 中去,我們使用了一個很有效率的函數(shù):

// 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中加入了虛擬DOM,這挺好的…對吧?

就像在生活和 Web 開發(fā)中的每一件事,虛擬DOM有利也有弊。

大小 - 其中之一就是更多的功能意味著代碼包中更多行的代碼。幸運的是,Vue.js 2.0 依舊比較?。ó?dāng)前版本 21.4kb),并且也正在刪除很多東西。

內(nèi)存 -同樣,虛擬DOM需要將現(xiàn)有的DOM拷貝后保存在內(nèi)存中,這是一個在DOM更新速度和內(nèi)存使用中的權(quán)衡。

并不適用所有情況 -如果虛擬DOM可以一次性進行批量的修改是非常好的。但是如果是單獨的、稀少的更新呢?這樣的任何DOM更新都將會使虛擬DOM帶來無意義的預(yù)計算。

因此,如果某個項目只有較少數(shù)量的節(jié)點,那么使用虛擬DOM會帶來速度上質(zhì)的變化么?實際上更可能的是使其更慢了!

但是對于多數(shù)的單頁面應(yīng)用來說,它還是會帶來提升的。

不僅僅是性能

使用虛擬DOM不僅僅是一次性能上的優(yōu)化,還意味著帶來了更多的功能。

例如,你可以使用虛擬DOM通過 render() 方法直接創(chuàng)建新節(jié)點:

new Vue({
el: '#app',
data: {
message: 'hello world'
},
render() {
var node = this.$createElement;
return node(
'div', 
{ attrs: { id: 'myId' } }, 
this.message
);
}
});

輸出:

<div id='app'>
<div id='myId'>hello world</div>
</div>

為什么做這個?它為你的JavaScript帶來了全編程能力。你可以通過使用JavaScript的數(shù)組方法來創(chuàng)建工廠化函數(shù)來搭建你的虛擬節(jié)點等等,這些用模板語法處理起來可能會更復(fù)雜。

以上所述是小編給大家介紹的Vue.js 2.0新增的虛擬DOM的知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue?PC前端掃碼登錄功能實現(xiàn)

    Vue?PC前端掃碼登錄功能實現(xiàn)

    最近在做APP客戶端掃描PC端二維碼登錄,于是記錄一下實現(xiàn)過程,下面這篇文章主要給大家介紹了關(guān)于Vue?PC前端掃碼登錄功能實現(xiàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Vue.js如何利用v-for循環(huán)生成動態(tài)標簽

    Vue.js如何利用v-for循環(huán)生成動態(tài)標簽

    這篇文章主要給大家介紹了關(guān)于Vue.js如何利用v-for循環(huán)生成動態(tài)標簽的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-01-01
  • element多級菜單動態(tài)顯示的實現(xiàn)

    element多級菜單動態(tài)顯示的實現(xiàn)

    通常在后臺管理系統(tǒng)中,需要根據(jù)每個用戶不同的權(quán)限來動態(tài)展示菜單,本文主要介紹了element多級菜單動態(tài)顯示的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 基于Vue SEO的四種方案(小結(jié))

    基于Vue SEO的四種方案(小結(jié))

    這篇文章主要介紹了基于Vue SEO的四種方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 分享一個vue項目“腳手架”項目的實現(xiàn)步驟

    分享一個vue項目“腳手架”項目的實現(xiàn)步驟

    這篇文章主要介紹了分享一個vue項目“腳手架”項目的實現(xiàn)步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • antd 表格列寬自適應(yīng)方法以及錯誤處理操作

    antd 表格列寬自適應(yīng)方法以及錯誤處理操作

    這篇文章主要介紹了antd 表格列寬自適應(yīng)方法以及錯誤處理操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Element中使用ECharts的項目實踐

    Element中使用ECharts的項目實踐

    本文主要介紹了Element中使用ECharts的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • vue實現(xiàn)分頁加載效果

    vue實現(xiàn)分頁加載效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)分頁加載效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 在Vue中使用WebScoket?會怎么樣?

    在Vue中使用WebScoket?會怎么樣?

    這篇文章主要介紹了在Vue中使用WebScoket,網(wǎng)絡(luò)的不穩(wěn)定而斷開連接,webscoket不會出現(xiàn)異常,下面就一起進入文章看看吧
    2022-01-01
  • axios+vue請求時攜帶cookie的方法實例

    axios+vue請求時攜帶cookie的方法實例

    做項目時遇到一個需求,后端需要在接口請求時,對用戶登陸狀態(tài)進行判斷,需要在請求時攜帶Cookie,下面這篇文章主要給大家介紹了關(guān)于axios+vue請求時攜帶cookie的相關(guān)資料,需要的朋友可以參考下
    2022-09-09

最新評論

确山县| 长治县| 吉林省| 怀宁县| 始兴县| 道真| 沂源县| 施甸县| 来凤县| 延庆县| 西城区| 临沧市| 平谷区| 开远市| 公主岭市| 武冈市| 南通市| 梅州市| 河西区| 平果县| 湘乡市| 汝南县| 南阳市| 封丘县| 玉溪市| 得荣县| 靖西县| 林周县| 武陟县| 绥中县| 永年县| 边坝县| 阳谷县| 文昌市| 麻城市| 瑞安市| 洞头县| 师宗县| 樟树市| 报价| 罗田县|