2013-03-11 17 views
8

Ostatnie 6 miesięcy pracuję nad komponentami Emberj.Jaki jest największy problem z wydajnością w Emberjście?

Wystąpiły pierwsze problemy z wydajnością, gdy próbowałem opracować składnik tabeli. Każda komórka w tej tabeli była Ember.View, a każda komórka miała powiązanie z właściwością obiektu. Gdy stół miał 6 kolumn i próbowałem wyświetlić listę około 100 przedmiotów, spowodowało to, że przeglądarka została zamrożona na jakiś czas. Odkryłem więc, że lepiej jest napisać funkcję, która zwraca ciąg zamiast używania kierownicy i ręcznie obsługuje wiązania przez obserwatorów.

Czy istnieje dobra praktyka, jak używać minimum wiązań? Albo jak pisać wiązania i nie tracić dużej wydajności. Na przykład ... nie używaj wiązania w przypadku dużej ilości danych?

Ile obiektów Ember.View można dodać do strony?

Dzięki za odpowiedzi

+0

Oto widok ember zoptymalizowany do wyświetlania dużych ilości danych przez ponowne użycie elementów DOM: https://github.com/emberjs/list-view – CraigTeegarden

Odpowiedz

8

Mamy aplikację ember który wyświetla 100s skomplikowanych elementów na jednej stronie. Każdy element wykorzystuje gotowe wiązania kierownicy do wyprowadzania około tuzina właściwości. Renderuje bardzo szybko (< 100ms) i bardzo niewiele z tego czasu spędza na wiązaniach.

Jeśli okaże się, że przeglądarka jest zawieszona na 6 kolumnach i 100 elementach, na pewno coś jest nie tak.

Czy istnieje dobra praktyka, jak używać minimum wiązań? Albo jak pisać wiązania i nie tracić dużej wydajności.

Spróbuj ustawić Ember.LOG_BINDINGS = true, aby sprawdzić, co się dzieje. Możliwe, że właściwości, które wiążą, mają zależności cykliczne lub są kosztowne do rozwiązania. Zobacz ten post dla cennych wskazówek dotyczących debugowania:

http://www.akshay.cc/blog/2013-02-22-debugging-ember-js-and-ember-data.html

ile obiektów Ember.View Istnieje możliwość dołączania do strony?

Nie sądzę, że istnieje konkretny limit, na pewno będzie to zależało od przeglądarki. Nie rozważałbym optymalizacji, gdyby nie było więcej niż kilka tysięcy.

Sprawdź ten przykład, aby zobaczyć, jak niedopałek może zostać zoptymalizowany do obsługi bardzo dużych tabel:

http://addepar.github.com/ember-table/

+0

Wielkie dzięki za odpowiedź Mike. Tablica ember pokazała mi, że naprawdę możliwe jest wyświetlanie ogromnej ilości rekordów w jednej tabeli. Twoje porady pomogły mi w debugowaniu aplikacji i stwierdzeniu prawdziwego problemu. –

+4

Byłoby miło, gdybyś podzielił się tym, czym był "prawdziwy" problem! –

4

Erik Bryn niedawno wygłosił o Ember.ListView które drastycznie obniżyć liczbę wyświetleń na stronie poprzez ponowne użycie komórek listy, które zniknęły z rzutni.

Połączyć tę technikę z group-helper, aby zmniejszyć liczbę znaczników skryptu metamorficznego, jeśli modeluje wiele właściwości w tym samym czasie. Dodatkowo rozważ użycie opcji {{unbound}}, jeśli nie potrzebujesz żadnej aktualizacji do aktualizacji na żywo.

Powiązane problemy