鍍金池/ 問答/HTML5  HTML/ vue性能問題?

vue性能問題?

相較于jquery頻繁操作DOM,vue的虛擬DOM與數(shù)據(jù)渲染是不是使頁面性能有了很大的提升?!

回答
編輯回答
黑與白
其實并沒有,但是勝在方便。

你可以看一看 Vue.js 的更新數(shù)據(jù) Diff 算法就可以發(fā)現(xiàn),Virtual DOM render + diff 顯然比渲染 html 字符串要慢的,雖然 Diff 算法復(fù)雜度為 O(n) ,可以得到最小操作結(jié)果,但是當(dāng) DOM 樹很大的時候,遍歷兩棵樹的性能損耗還是很大的??梢越Y(jié)合下圖看看 Vue 的 Diff 算法:

圖片來自于網(wǎng)絡(luò)(圖片來自于網(wǎng)絡(luò))

其實在得到最小化的 DOM 操作結(jié)果 DOM 之前,Vue 是需要進(jìn)行 Diff 算法的,而手動 DOM 操作都是盡可能一一對應(yīng)的也就是最小化 DOM 操作。

最后引入尤雨溪大大的一句話:

在我看來 Virtual DOM 真正的價值從來都不是性能,而是它 1) 為函數(shù)式的 UI 編程方式打開了大門;2) 可以渲染到 DOM 以外的 backend,比如 ReactNative。
2018年5月1日 19:04
編輯回答
陌上花

大。很大。非常大。dom本身上面有非常多的屬性??梢哉{(diào)試一下看到。而虛擬dom只有必須的屬性。所以操作起來性能會更好

2017年1月26日 14:33
編輯回答
背叛者

提高性能,比如說列表的for循環(huán),都會要求加上一個唯一的key.如果不加key的話控制臺會報警告.這個key的作用是為vue的響應(yīng)式渲染提供方法,復(fù)用虛擬dom,減少資源的消耗

2017年7月8日 17:20
編輯回答
奧特蛋

比原生操作要慢
最后都要操作dom 只要你操作dom那就是要通過dom提供的api(這一步vue和我們都是一樣的)
增加virtual dom 多了一層怎么能快

    // 我們自己
    data => dom api => html
    // vue
    data => virtual dom => patch virtual dom => dom api => html

他唯一的優(yōu)勢就是他幫你做了這一層你不需要在手動去同步data=>view
并且他并不比你慢太多,這樣可以解放出來我們更多的關(guān)注業(yè)務(wù)

2017年3月2日 15:41