JQuery çok büyük bir belgede çalışır mı?

Hey orada programlama peps! Bir sorum var: jQuery. Çok büyük bir HTML raporu üreten bir yazılım uygulamasına sahibiz ... 500-2000 adet basılmış sayfaların siparişi büyük. Sabit diskten yüklemek için Google Chrome'u 12-20 saniye arasında alabilir.

Kullanımda, yalnızca raporun HTML sürümünü vermek için bazı ek işlevler sunan bir JavaScript bulunmaktadır. Şu anda, tüm etkinlikler satır içi HTML onclick lerden vb.

JQuery'ye dönersem ve olayları bağlamak için seçicileri kullanırsam, seçiciler 10'ar binlerce öğeyi kolayca eşleştirebilir. Ayrıca, jQuery'yi kullanmanın tipik yolu (ör., $ (document) .ready() ), tıklama olayının belgenin tam olarak yüklenmesine kadar yanmamasına neden olur.

So the questions are: Is jQuery up to this task? Or am I better suited leaving inline script? If it is, are there certain techniques I need to use to make it work well? And is there a way to circumvent the "no events until document load" scenario?

And a secondary question (this one just occurred to me as I was writing this): This report is being sold to a client. What are my license obligations if jQuery is included as apart of the report?

Edit

@ jfriend00: Bunu nasıl yapacağım konusunda biraz kaydım var (raporu böl.). Rapor 2 formatta yayınlanmıştır: HTML ve PDF. Müşteriler, bölümleri basabilecekleri bir dijital el kitabına sahip olmak isterler. Ayrıca, HTML versiyonunu istiyorlar çünkü anahtar parçalarını bağlayan çapalar sağlıyor. JavaScript, raporun dayandığı temel veriyi görüntüleyen bir açılır pencereye izin verir. Olan şey, bir ölçekleme problemine girdiğimiz. Analiz edilen veriler büyük ölçüde arttı ve sonuçta elde edilen raporun büyüklüğü de arttı.

Gizli nedenlerden ötürü, rapor çevrimiçi ortamda veya dahili bir intranette yayınlanamaz. Bir yerel makine üzerinde çalışacak bir teslim edilebilir olmalı.

Eğer bu incelikle nasıl ele alınacağına dair ipuçları varsa, fikirlerinizi duymak isterim. Bu, bir süredir beni rahatsız eden bir konudur.

2
@epascarello Bağlantı için teşekkürler!
katma yazar jwatts1980, kaynak
@ jfriend00: Sorunuzu, yorumunuzla ilgili bazı ek bilgilerle güncelledim.
katma yazar jwatts1980, kaynak
@ jfriend00: Bunu başarmayı düşünebilmemin tek yolu, onlara HTML dosyalarının sıkıştırılmış bir dizinini göndermektir. Sayfaları hızlı tutmak için muhtemelen raporu 100-200 ayrı belgeye bölmek zorunda kalacağım.
katma yazar jwatts1980, kaynak
@ jfriend00: Tavsiyenizi takdir ediyorum. Müşteri geri bildirimlerimiz yalnızca raporlarla ilgili olumlu sonuçlar verdi. Ama bence bu, raporumuzun ihtiyaç duydukları bilgiye ulaşabilmesinin tek yolu olduğu için, buna katlanıyorlar. Ama bu benim geliştiricim olarak benim düşüncem değil. Önerdiğiniz gibi, başa çıkılması kolay olan raporu bulduklarını düşünemiyorum. Ancak, müşteriler herhangi bir memnuniyetsizlik dile getirmediklerinde bir şeyi değiştirmek için zaman ve masrafı haklı çıkarmak zor olabilir.
katma yazar jwatts1980, kaynak
katma yazar epascarello, kaynak
Kendiniz ve izleyicilerinize büyük bir iyilik yapın. Web sayfanızın yeni bir tasarıma ihtiyacı var. Daha fazla dinamik davranış eklemeniz gerekir, böylece veriler bir kerede yüklenmiş olan 2000 sayfadan ziyade talep üzerine yüklenir. jQuery, bilgisayar ve sabırda yeterli belleğiniz olduğu sürece bununla iyi çalışır - belirli işlemlerin tamamlanması için ne kadar beklemek istediğinizin bir sorundur.
katma yazar jfriend00, kaynak
Hiç kimse 2000 sayfalık bir raporu okumak istemediğinden, genellikle bu problemi çözme biçiminiz, izleyicinin ilgilendikleri istenen verilere ulaşmasını sağlamanız ve daha sonra ajax kullanarak veya yeni sayfa kullanarak bu verileri yükleyip görüntülemenize izin vermenizdir. yükler. Daha sonra farklı verileri görmek istiyorlarsa, farklı veriyi dinamik olarak yükler ve onlara görüntülersiniz. Bu, daha düşünceli bir tasarım gerektirir ve izleyicinin ne görmek istediklerini size anlatmak istediğini ve daha sonra yalnızca bu bilgiyi getirip görüntüleyebilmeyi yeniden düşünür. Ancak, ölçeklenebilirlik ve performans daha büyüktür.
katma yazar jfriend00, kaynak
Konuyu bilmiyorum, bu yüzden nasıl ayrılacağınıza yardım edemezsiniz, ancak sonuçların çok sayfalı bir navigasyonunu yapmak için herhangi bir makul şekilde düşünemezseniz, o zaman ne olduğunu anlamıyorsunuz demektir. Görüntüleyici isteyebilir veya gerçekten sorunu yeniden düşünmüyorsunuz. Hiç kimse aynı anda ekranda 2000 sayfaya ihtiyaç duymuyor.
katma yazar jfriend00, kaynak
Ya da, eğrinin önünde olabilir ve müşterilerinizle birlikte liderlik gösterebilir ve verilerinin, istedikleri şeyi bulma zorluğu ve yükleme süresi performansından dolayı acı çekmeye başlaması için yeterince büyük bilgi aldığını ve Hem şimdi hem de gelecek için daha büyük miktarda veriyle daha iyi çalışan bir tasarım ile ortaya çıkan yeni bir proje düşünün. Müşterinin faturaları ödediğini ve $ 'ı nereye harcayacağına karar verdiklerini anlıyorum, ancak bazen de konuların dikkat etmesi gereken konular hakkında eğitmeniz gerekiyor.
katma yazar jfriend00, kaynak
500-2000 sayfa overkill ... her nasılsa
katma yazar darioo, kaynak

4 cevap

document.ready ile ilgili olarak, etkinliklerinize bağlanmak için .live() işlevini kullanabilirsiniz; böylece DOM'a öğeler eklendikçe olay işleyicileri eklenir:

Yerine:

$(function() {
    $().bind(, );
});

.live() kodunu kullanabilirsiniz:

$().live(, );

.live() 'nin açıklaması ( http://api.jquery.com/live/ ):

Akımla eşleşen tüm öğeler için etkinliğe bir işleyici ekleyin   seçici, şimdi ve gelecekte.

4
katma
JQuery'ye geçersem bunu deneyeceğim. Cevabınız için teşekkürler!
katma yazar jwatts1980, kaynak

jquery hemen hemen her göreve bağlı. Soru, bu raporların yükleneceği tarayıcıya devam edip edemeyeceğidir. Raporda her satırda bir "işlem başlat" yönergesi yerleştirebilirsiniz. Böylece, 100 satırlık raporun ardından bir JS çağrısı var demektir. komut dosyasını bu 100 satırda başlatmak için.

Sonra başka bir 100 satırlık rapor ve başka bir işlev çağrısı. Acı verici, ancak en azından bu ilk birkaç yüz satır, sayfanın geri kalanı yüklendikçe etkileşimli olacaktır.

# 2 gelince, bu yasal bir sorun. jQuery çift MIT/GPL lisansı altındadır, bu yüzden muhtemelen iyisiniz, ancak emin olmak için bir avukatla konuşun. "Ama internetteki bazı rasgele tuhaflar, tamam olduğunu söyledi!" bir telif hakkı ihlali rapine mahkemeye başvurduğunuzda geçerli bir savunma değildir.

2
katma

Lisans bölümüne gelince, jQuery'in kullanımı ücretsizdir ve istemci dağıtım için belirli kurallara sahip değildir.

Performans kısmına gelince jQuery problem değil. Tabii ki, her şey büyük bir DOM ile biraz yavaşlayacak. Ayrıca, tarayıcılarınızı incelemek için farklı JS motorları kullandığından, tarayıcılara da bakmanız gerektiğini düşünüyorum.

Eğer betik zaten yavaşlarsa, bazı şeyleri bölmek veya daha spesifik seçmenler eklemek ve raporunuzun bitini biraz daha ele almak isteyebilirsiniz.

1
katma

500-2000 basılı sayfa belgenizi sıralayın ve içeriği dinamik olarak yüklemek için ajax kullanın.

1
katma