In den letzten 6 Monaten entwickle ich eine Emberjs-Komponente.
Ich hatte erste Leistungsprobleme, als ich versuchte, eine Tischkomponente zu entwickeln. Jede Zelle in dieser Tabelle war Ember.View und jede Zelle hatte eine Bindung an Objekteigenschaften. Als die Tabelle 6 Spalten hatte und ich versuchte, ungefähr 100 Elemente aufzulisten, verursachte dies, dass der Browser für eine Weile eingefroren war. So entdeckte ich, dass es besser ist, eine Funktion zu schreiben, die eine Saite zurückgibt, anstatt Lenker zu verwenden und Bindings manuell von Beobachtern zu handhaben.
Gibt es also eine gute Übung, wie man ein Minimum an Bindungen einsetzt? Oder wie man Bindungen schreibt und nicht viel Leistung verliert. Zum Beispiel ... Binding nicht für eine große Datenmenge verwenden?
Wie viele Ember.View-Objekte können an die Seite angehängt werden?
Danke für die Antwort
Wir haben eine Glut-Anwendung, die Hunderte von komplexen Gegenständen auf einer einzigen Seite anzeigt. Jeder Artikel verwendet Out-of-Box-Lenkerbindungen, um etwa ein Dutzend Eigenschaften auszugeben. Es rendert sehr schnell (& lt; 100 ms) und sehr wenig von dieser Zeit wird für Bindungen verbraucht.
Wenn Sie feststellen, dass der Browser bei 6 Spalten und 100 Elementen hängt, ist sicherlich etwas anderes nicht in Ordnung.
Gibt es also eine gute Übung, wie man ein Minimum an Bindungen einsetzt? Oder wie man Bindungen schreibt und nicht viel Leistung verliert.
Setze Ember.LOG_BINDINGS = true
, um zu sehen, was passiert. Könnten die Eigenschaften sein, die Sie binden, um zirkuläre Abhängigkeiten zu haben oder die kostspielig zu lösen sind. In diesem Beitrag finden Sie hilfreiche Tipps zum Debuggen:
Wie viele Ember.View-Objekte können an die Seite angehängt werden?
Ich glaube nicht, dass es ein konkretes Limit gibt, das wird sicher vom Browser abhängen. Ich würde nicht optimieren, es sei denn, es gab mehr als ein paar tausend.
Sehen Sie sich dieses Beispiel an, um zu sehen, wie ember für die Verarbeitung sehr großer Tabellen optimiert werden kann:
Erik Bryn hat kürzlich einen Vortrag über Ember.ListView gehalten, der die Anzahl der Aufrufe auf einer Seite drastisch reduzieren würde Listenfelder wiederverwenden, die aus dem Viewport verschwunden sind.
Kombinieren Sie diese Technik mit group-helfer , um die Anzahl der Metamorph-Skript-Tags zu reduzieren, wenn Sie mehrere Eigenschaften gleichzeitig modellieren Zeit. Ziehen Sie außerdem in Betracht, {{unbound}}
zu verwenden, wenn Sie keine der zu aktualisierenden Eigenschaften benötigen.
Tags und Links performance binding ember.js