Bir JavaScript Eşzamansız Yükleyici Seçme [kapalı]


9

Çeşitli eşzamansız kaynak yükleyicilere baktım ve hangisini kullanacağımdan henüz emin değilim. Çalıştığım yerde, sınıf modülleri farklı jQuery (vs) sürümlerini kullanabilen farklı grup çabalarımız var. Bu nedenle, iç içe bağımlılıklar da farklı olabilir. Bunun üzerinde hiçbir kontrole sahip değilim, bu yüzden dinamik olarak aynı kütüphanenin alternatif sürümlerini kullanabilecek kaynakları yüklemem gerekiyor.

Gibi, benim gereksinimleri şunlardır:

  1. JavaScript ve CSS kaynak dosyalarını senkronize olmayan bir şekilde yükleyin.
  2. Sürümler arasında bağımlılık sırasını ve iç içe bağımlılıkları yönetin.
  3. Bir kaynağın önceden yüklenmiş olup olmadığını tespit edin.
  4. Web alanları arası yüklemeye izin verilmelidir (CDN'ler)
  5. (isteğe bağlı) Bir kaynağı kaldırmamıza izin verin.

Şuna bakıyordum:

Sürümleri düzgün adlandırılmış değişkenlere yükleyerek ve zaten yüklü olanı izlemek için bir dizi kullanarak bu gereksinimleri kendim taklit edebilirim ... ama (umarım biri zaten bunu icat etti.

Yani sorularım:

  • Hangisini kullanıyorsun? Ve neden?
  • Gereksinimlerimi tam olarak karşılayan başkaları var mı?
  • Hangisiyle çalışmak için en etkili ve en kolay buluyorsunuz? Ve neden?

GÜNCELLEME:
İlgilenenler için yukarıdaki tüm AMD kütüphanelerini (ve daha fazlasını) denedim. Sonunda RequireJS ile gittim . Genel olarak daha temiz ve daha kolay ... ve kullanmaktan memnunum.


JavaScript için # 5'in bile mümkün olduğunu düşünmüyorum. Teorik olarak CSS için mümkün olabilir, ancak herhangi bir tarayıcının bunu destekleyip desteklemediğinden emin değilim.
Mike Baranczak

@Mike Yorum yaptığınız için teşekkürler! Eşzamansız yükleyici kaynakları nesne değişkenleri kullanarak izlediyse ve doldurduysa ... bu tamamen mümkündür.
Mahkum ZERO

Doğru, ancak YENİ yapıcı nesneyi çoğaltacaktır, bu yüzden aradığınız bir şeyden yeni bir şey oluşturursanız, hala orada olacaktır. Neden yine de boşaltıyorsun?
Gizli

@ user1525 Yorum yaptığınız için teşekkürler! Kaynakların boşaltılması bellekte tasarruf sağlar. Yukarıdaki sorumu yorumunuzla ilgili birkaç düşünceyle düzenleyeceğim (birkaç dakika içinde). Tekrar teşekkürler!
Mahkum ZERO

jQuery zaten getScriptkomut dosyası yerleştirme işlevine sahiptir .
zzzzBov

Yanıtlar:


7

RequireJS'yi ciddi projelerde kullandım ve bayıldım, ancak asenkron bir yükleyici anlamına gelmiyor. Gerçekten bir modül sistemi olması gerekiyordu. Bu amaca hizmet için eşzamansız yükleme sağlanır. Gereksinimlerinizden herhangi birini karşılamak için itilebilir, ancak yükleme hizmetleri rastgele dosyalar değil, modüller yüklemek için tasarlanmıştır.

JavaScript ve CSS kaynak dosyalarını eşzamansız olarak yükleme : Requirejs, komut dosyası etiketi yerleştirmeyi kullanarak ihtiyacınız olan tüm modülleri eşzamansız olarak yükler.

Sürümler arasında bağımlılık sırasını ve iç içe bağımlılıkları yönetme : RequireJS burada parlar. Modüller diğer modüllere bağımlılık bildirebilir ve yükleme sırası bu bağımlılık bildiriminden çıkarılacaktır. Ayrıca, bağımlılıklara göre siparişi zorlayabilecek bir sipariş eklentisi de vardır.

Bir kaynağın önceden yüklenmiş olup olmadığını tespit edin : Requirejs bir modülü sadece bir kez yükleyecektir.

Web alanları arası yüklemeye izin verilmelidir (CDN'ler) : Bu mümkündür, ancak bazı yapılandırmalar gerektirir; Herhangi bir modül için belirli bir URL ayarlayabilirsiniz ve bu, varsayılan konumu geçersiz kılacak şekilde CDN olarak ayarlayabilirsiniz.

RequireJS, biçimini kullanarak modüller yazarsanız en iyi şekilde hizmet verir ve ham javascript yüklemek için kullanıyorsanız en az etkili olur.

Ayrıca, modüllerinizi üretim için tek bir dosyada birleştirecek bir oluşturma işlemi sağlar.


3

Teorik olarak, önceden yüklenmiş komut dosyalarının bir listesini tutabilir ve henüz yüklenmemiş komut dosyalarını yükleyen bir işlev yapabilirsiniz.

http://jsfiddle.net/BDG/Dhdu7/2/


2
Ya da bu ve daha fazla özelliğe sahip olan Curl / RequireJS kullanın. Ve bunu kendiniz korumak zorunda değilsiniz;)
Raynos 17:11

Net bir yapı ve akraba olmayan içeriklerden bahsetmeyi unuttunuz.
Gizli

2

RequireJS'ye bakıyorsanız ve CSS dosyalarına bağımlı olmak istiyorsanız, CSSP RequireJS eklentisini kontrol edebilirsiniz :

Dolgu ile CSS. Bu proje, RequireJS projesi için modüllerin CSS dosyalarını bağımlılık olarak listelemesine izin veren bir eklenti uygular . Bu, RequireJS'nin değerlendirilecek JavaScript modülünü serbest bırakmadan önce belirli stil kurallarının geçerli olduğu bilinene kadar beklemesini sağlar. Örneğin, JavaScript modülünüz ayrı bir dosyada tanımlanan belirli CSS kurallarının, başlatılmadan önce DOM'a uygulanmasını gerektiriyorsa yararlı olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.