KnockoutJS'yi kullanmanın en iyi yollarını bulmaya çalışıyorum ve tavsiyenize ihtiyacım var.Knockout JS ve büyük modeller
Görünüm modelim, her birinde "değerler" kümesi bulunan bir dizi "belge" içerir. Her "belge" Aşağıdaki şablonu kullanarak ayrı tablo olarak düzenlenir:
<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>
Her şey görünümü modelleri büyük olduğu durumlar dışında çalışıyor. Örneğin, bir görünüm modelinin boyutu yaklaşık 1 megabaytsa (ve her biri 60 değer içeren 80 belge içeriyorsa), görüntülemenin makinemde iki dakikadan uzun sürmesi gerekiyorsa. önemli ölçüde performansını artırmak için ... Ya da Knockout vazgeçmek ve sadece sunucu tarafında html oluşturmak ve sadece tarayıcıya itmek hızlı olacaktır bir yolu varsa
ben ... merak ediyorum
"Sadece" 300kb görünüm modelinin oluşturulması 30 saniyeye kadar yaklaşıyor.
"Belgeler" kullanıcılar tarafından tanımlanmıştır, bu nedenle> 2 megabaytlık senaryo bile vardır (bunu neden yaptıkları bilmiyorum).
JavaScript'te büyük görüntüleme modelleriyle ilgili deneyim sahibi olan var mı?
Teşekkürler. Görünüm modelimin nasıl yapılandırıldığı ile oynamak, cevabınıza göre gerçekten yardımcı olmaz mı? Yani, iki fazlı bağlamalar yaparsam: önce boş bir tabloyu bağla ve sonra bu tabloyu veriyle doldurmak için bağla, vs? –
Ayrıca, diğer MVVM çerçevelerini veya şablon motorlarını (omurga, jQuery.tmpl, vb. Gibi) denemek mantıklı mıdır, yoksa performans hemen hemen aynı mıdır? Başka bir deyişle, genel bir JavaScript/Tarayıcı/Dom problemi mi, yoksa sadece yavaş olan Knockout mu? Tabii ki en azından bir başka çerçeveyi deneyeceğim ama hepsini denemek çok zaman alıyor, bu yüzden tecrübeli adamlardan tavsiye istiyorum :) –
@Alexey Raga - İstemci tarafında ciltleme yaptığınız her zaman performansınız tarayıcı tarafından sınırlandırılacaktır. Birisi IE8 (yavaş JavaScript motoru) kullanıyorsa ve model çok büyükse, onu işlemek için birkaç dakika alır. JQuery.tmpl'in% 50 daha hızlı olması sizin için yeterli olacaksa, "performansı önemli ölçüde artırır" olarak düşündüğünüz şey için gerçekten hiçbir sınırlama vermediniz? ... –