J'essaie de comprendre les meilleures façons d'utiliser KnockoutJS et j'ai besoin de votre avis.Knockout JS et grands modèles
modèleMa vue contient un ensemble de « documents » chacun d'eux a un ensemble de « valeurs ». Chaque « document » est rendu sous la forme d'une table séparée en utilisant le modèle suivant:
<div data-bind="foreach: Documents">
<table data-bind="foreach: Values">
<tr data-bind="foreach: $data">
<td data-bind="attr: {colspan: Colspan}">
<label data-bind="text: Label"></label>
<br />
<span data-bind="html: Value"></span>
</td>
</tr>
</table>
</div>
Tout fonctionne bien, sauf lorsque la vue des modèles sont grandes.
Par exemple, si la taille d'un modèle de vue est d'environ 1 méga-octet (et contient 80 documents avec 60 valeurs chacun), le rendu est plus de deux minutes sur ma machine.
Je me demande s'il y a un moyen d'améliorer considérablement les performances ... Ou sera-ce plus rapide de renoncer à knock-out et juste construire html sur un côté serveur et il suffit de pousser au navigateur ...
Le rendu "juste" du modèle de vue 300kb prend près de 30 secondes.
Les « documents » sont définis par les utilisateurs, il y a même> 2 méga-octets scénarios (je ne sais pas pourquoi font-ils le font).
Quelqu'un at-il une expérience avec de grands modèles de vue en JavaScript?
Merci. Donc jouer avec la façon dont mon modèle de vue est structuré n'aidera pas vraiment selon votre réponse? Je veux dire, si je fais des liaisons en deux phases: lier une table vide d'abord, puis lier cette table pour la peupler avec des données, etc? –
D'après votre expérience, est-ce logique d'essayer d'autres frameworks MVVM ou moteurs de templates (comme backbone, jQuery.tmpl, etc) ou la performance est à peu près la même? En d'autres termes, est-ce un problème général JavaScript/Browser/Dom ou est-ce juste Knockout qu'être lent? Bien sûr, je vais essayer au moins un autre cadre moi-même, mais en essayant chacun d'entre eux prend beaucoup de temps, c'est pourquoi je demande un conseil de gars expérimentés :) –
@Alexey Raga - Chaque fois que vous faites une liaison sur le côté client votre performance sera limitée par le navigateur. Que faire si quelqu'un utilise IE8 (moteur JavaScript lent) et le modèle est énorme, il leur faudra quelques minutes pour le rendre. Vous n'avez pas vraiment donné de limites pour ce que vous considérez comme "améliorer significativement les performances" si jQuery.tmpl est 50% plus rapide serait-ce suffisant pour vous? ... –