Es gibt rund 300 Komponenten innerhalb der Wrapper-Komponente gerendert und es dauert zu viel Zeit zu rendern. Aber ich brauche Tausende von Komponenten, die im Wrapper-Container gerendert werden. Wie kann ich dies erreichen, ohne Performance-Probleme, während die Komponenten-Rendering Image shows the rendering time taken by 300 components which is too muchSo optimieren Sie das Rendering von Komponenten in Ember JS
Antwort
Wenn Sie eine Rolle und alle Ihre Komponenten sind in der viewport zugleich nicht, können Sie die Proxy Pattern
verwenden.
Es gibt ein Ember-Addon namens ember-in-viewport
, das erkennt, ob sich Ihre Komponente im Ansichtsfenster befindet oder nicht. Wenn Sie es verwenden, können Sie das Proxy-Muster implementieren.
Hier ist ein sample twiddle. Wenn Sie application.hbs
my-proxy-component
anstelle von my-component
verwenden, würde Seitenrendering fast 3 mal schneller sein.
Diese Tipps sind ein bisschen hacky aber helfen könnten:
Sie zu faul Last die kritischsten einige der Komponenten, wie zum Beispiel wollen könnte laden und dann den Rest laden eine berechnete Eigenschaft nach einer festgelegten Timeout-Wechsel auf didRender-Ereignis (im Ruhezustand).
Zum Beispiel:
onDidRender: Ember.on('didRender', function() {
Ember.run.later(() => {
this.set('displayLazyItems', true);
}, 2000);
})
Eine andere Sache, die Sie wollen könnte, ist Inline-Code zu tun, anstatt eine neue Komponente für kleine Gegenstände zu schaffen. Rendering könnte einige Zeit dauern.
Zeichnen Sie eine Zeitleiste und stellen Sie sicher, dass die Leistung tatsächlich von Renderzeit kommt, manchmal ist tatsächlich einige Javascript-Ausführung oder das Laden, das versaut ist.
Zu guter Letzt enthält Ember 2.10 Glimmer 2, diese neue Render-Engine kann die Renderzeit um bis zu 50% optimieren. Vielleicht möchten Sie sie verwenden.
- 1. Optimieren Rendering Lasten von Komponenten in reagieren
- 2. Rendering in ActionScript 3 optimieren
- 3. Wie Sie das Rendering von Chrome-Daten optimieren können
- 4. So optimieren Sie das Kompilieren von 2D-Arrays in Swift
- 5. Ember: verschachtelte Komponenten Ereignisse sprudeln
- 6. Reactjs Async-Rendering von Komponenten
- 7. Stille Fehler in ember Komponenten
- 8. So speichern Sie geschachtelte Objekte in Ember js
- 9. Ember Komponenten im Unterverzeichnis
- 10. Rendering Bootstrap-Komponenten in EditorTemplates
- 11. Reagieren: Bedingte Rendering von Komponenten und Arrays
- 12. MYSQL in ember js
- 13. Rendering Array Ember mit {{jedem}}
- 14. So optimieren Sie diesen Code
- 15. Optimieren Generieren von HTML-Tabelle in js
- 16. So aktivieren Sie das MathJax-Rendering in Sublimetext Markdown-Vorschau
- 17. Ember. Kommunikation zwischen Komponenten. Breadcrumbs
- 18. So optimieren Sie die Aggregationsabfrage in elasticsearch
- 19. So optimieren Sie diese Javascript-Duplikate
- 20. three.js Animationen in Ember js
- 21. So führen Sie eine Aktion in Ember Controller afterRender
- 22. So entfernen Sie Ereignis-Listener in Ember
- 23. Rendering-Komponenten in div mit Reagieren Router
- 24. EmberJS: Ember Datenbindung oneway in Komponenten
- 25. relative Bildquelle Ember js
- 26. Vue JS Conditional Rendering
- 27. Scroll-Erkennung in Ember JS?
- 28. Ember JS, aktualisierendes Array, das in Sichten nicht reflektiert
- 29. So optimieren Sie die Einfügung von Tausenden Datensätze in SQLite
- 30. So kompilieren Sie öffentliche es6 Quellen von Ember CLI
Sind diese Komponenten Datenobjekten, die Sie von Ihrem API erhalten? Müssen Sie wirklich alle beim Start gerendert werden, oder bevorzugen Sie eine Art Seitenumbruch? – Ninigi
Ja, die Komponentendatenobjekte stammen aus der API. Und ich muss sie wirklich alle auflisten und die Auswahl der Komponenten implementieren und dann die ausgewählten Elemente in der Liste per Drag & Drop sortieren. –
Hm, ich denke, es würde helfen, etwas Code zu sehen, vor allem Ihre Route vielleicht? Mach dir aber nicht zu große Hoffnungen, es könnte einfach sein, dass es unmöglich ist, es schneller zu machen, als du vielleicht schon getan hast. – Ninigi