2013-02-11 99 views
0

我讀這個博客:角運行循環

http://eviltrout.com/2013/02/10/why-discourse-uses-emberjs.html

運行循環

一個EmberJS的更復雜件是運行循環。通常 你不知道它,但在幕後Ember批量更新 到DOM和綁定的性能。在其他一些框架中,如果您有100個項目的列表,並遍歷整個項目並將它們全部更改爲 ,那麼您將最終得到100個單獨的DOM更新。 Ember將批量購買 ,並一次全部更新,提供更好的用戶體驗。

它提到了這個角度問題。這是真的?有什麼方法可以緩解這種情況嗎?從它的聲音來看,如果是這種情況,那麼角度可能會比性能明顯落後?

回答

2

AngularJS也有類似runloop的東西。他們處理綁定的方式是通過髒檢。一種技術也用於(要求苛刻的)3d視頻遊戲。我們的想法是,使用這種方法,AngularJS能夠爲包含2000個元素的guis提供快速響應(< 50ms)的流暢體驗(更多意味着您的gui在角度意見中包含太多信息)。也就是說,Angular將在較新的瀏覽器中很快開始使用Object.observe()功能。

你可以在這裏閱讀: http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html

Object.observe() prototype (replace our dirty checking with O.o()) 

這意味着角將取代它的髒東西我認爲是對這一問題的最佳性能檢查。好處是你可以使用一個不那麼複雜的設置(在EmberJS中你必須使用Ember.set()和.get()方法,而這將不再是必需的。

你的選擇會下降想要支持舊版瀏覽器(EmberJS可以),支持gui中的大量元素。

+0

AngularJS不批量更新DOM - 這可能是性能問題。 – zcrar70 2013-11-19 12:41:01