ASP.NET C# 2.0 ile kullanıyorum. Bir veritabanı için bazı nesneler oluşturdum ve bu nesnelerin her biri doğal olarak adlandırılabilecek veya benzer bir şekilde çağrılan ve bunlardan bir RESTful JSON API'si yaratan özelliklere sahip.Sunucu tarafı ve istemci tarafı yöntemi
Bu sitede 'modülleri' olarak adlandırmaktan hoşlandığım çok sayıda sekme gibi bir şey var - bir modülün işlevi, sayfada görüntülenecek HTML'ye veri dönüştürmektir. İdeal olarak, bu işlemin yüklenecek ilk sekme için hem sunucu tarafı C# kodunda yapılması gerekir, daha sonra sekmeler tıklandığında diğerlerini yüklemek için Ajax'ı kullanın, ancak eski tarayıcılar ve arama motorları için, sekme yine de aynı HTML kodu sunucu tarafı.
Şu anda JavaScript kodunu, her bir modülü HTML'ye dönüştüren C# kodundan tamamen ayrı yazıyorum, ancak yöntem hemen hemen aynı, yalnızca farklı bir dil. Bu örneğe benzer.
C# kodu
public override string GetHtml()
{
IJsonObjectCollection<Person> response = ((Village)page).People;
string html = "<div id=\"test\">";
foreach (Person person in response)
{
html += "<div class=\"person\">";
html += person.Name;
if(canEdit) html += "*";
html += "</div>";
}
return html + "</div>";
}
JavaScript Bu soru ile nereye gidiyorum Muhtemelen görebilirsiniz
function getHtml() {
JsonRequest('/json/villages/1/people', function(response) {
var html = '<div id="test">';
for (int i = 0; i < response.length; i++)
{
var person = response[i];
html += '<div class="person">';
html += person.name;
if(canEdit) html += '*';
html += '</div>';
}
return html + '</div>';
});
}
kodu. Bunu yapmanın en etkili yolu ne olurdu? Birkaç farklı alternatif düşünmekteydim -
1. Her ModuleToHtmlMethod bu veri nesnesini HTML'ye dönüştürme yöntemini tanımlayan bir sınıf olabilir. Bunu denedim ama durdum çünkü çok karmaşıklaşıyordum.
2. C# olarak yorumlanabilen, ancak JavaScript koduna 'derlenmiş' olan kendi kodlama dilimi yazın.
3. Sadece C# çok yazmak ve sadece C#
4. HTML içeriği istemesini ayrılan kodu tutun Ajax kullanmak ve iki kez her yöntemi yazın.
Sonunda diğer geliştiricilerin bu 'modülleri' yazmasına izin vermek isterim, bu nedenle en iyi seçenek olabilir mi?
ben bu muhtemelen gitmek için en iyi yol olduğunu düşünüyorum. Buradaki problem, kodun büyük çoğunluğunun döngü halinde olmasıdır (ki bu oldukça büyük olabilir), bu yüzden html'nin büyük bir çoğunluğu tekrarlanacaktır, bu da yanıt büyüklüğünü önemli ölçüde artıracaktır. Kompresyon gzip burada bana yardım eder mi? – Connell
gzip kullanarak yanıt boyutunun% 50-70'ini traş etmelisiniz, bu kabul edilebilir olup olmadığını görmek için çağrıdır. JSON RESTful API'sini ve HTML RESTful API'sini kullanarak aynı yanıt arasındaki Bayt'taki farkı hesaplamanız gerekir. Fark% 50'den azsa, gzip kesinlikle işaretleme yükünü çözecektir. –
Size,% 50'den fazla ekstra olması gerekeceğini söylemek için test etmem gerekiyor. Genellikle 10-20 kez döngü yapabilen, ancak çağrılan veri türüne bağlı olarak 50 tek sayıya kadar uzayabilen ilmekler vardır. Daha sonra html kodu, ''