2011-02-01 14 views
20

Bir projede ilk kez requirejs kullanıyorum. Zaten yerinde bir çok Javascript içeren bir ortamda çalışıyorum ve kendi kodumu tanıtmak için temiz yollar arıyorum.Global jquery'yi gizlemeden requirejs ve jquery'yi kullanın?

sorun yaşıyorum ben mevcut jQuery clobber etmediğini yükleyebilirsiniz jQuery bir modül bulmak için görünmüyor olabilir.

Gereksinimin bile jquery.js'nin jQuery'nin global sürümünü tanıttığı şaşırmıştı. JQuery'yi herhangi bir globals sunmadan bir modül olarak yüklemek için bir yol var mı?

cevap

24

jQuery 1.7 bozmadan yerel jQuery uzamasını sağlamak için .sub kullanabilirsiniz AMD yükleme destekler. Ancak, hile, bir modül adlandırma çakışmasından kaçınmaktadır, çünkü jQuery kendi modül adını 'jquery' olarak kodlar. Eğer başka bir modülü 'jquery' olarak tanımlıyorsanız, (requirejs config'unuzdaki 'paths' özelliğinde), söz konusu çelişkiye neden olacaktır.

böyle 'jquery-yükleyici' ve gibi bir modülü tanımlamak, senin requirejs uygulama kapsamında jQuery yüklemek için jQuery yüklemek istediğinizde, 'jquery-yükleyici' aracılığıyla bunu:

define(['path/to/jquery.min'], function() { 
    return jQuery.noConflict(true); 
}); 

requirejs olacak jQuery'ye başvurunuzu 'önbelleğe alır', böylece noConflict yalnızca jquery-loader ilk kez yüklenir.

3

Çoklu versiyonları kötü istiyorum. JQuery'yi durdurmayı ve yükseltmeyi veya eski sürümü kullanmayı bırakın. Eğer eski jQuery değişkeni değiştirmek ve küresel olduğunu yok etmeyecek true.noConflict geçmek durumunda

(function($) { 
    // requirejs inclusion block for loading 


}(jQuery.noConflict(true)); 

deneyin güvenli $ tutmak gelince

.

Bu, sessizce iletebileceğiniz anlamına gelir. Eğer Sonra kapatılması yerel $ olarak 1.5 jQuery küresel alanda geri 1.2 $ & jQuery koymak ve size verecekti Yukarıdaki kodu kullanarak

<script src="jquery-1.2"> 
<script src="jquery-1.5"> 

olduğunu varsayalım

Yine kullanarak againts tavsiye Çoklu versiyonları çünkü bir doğru karmaşa ve bakım kabusu. senin 1.5 kullanıyorsanız

ayrıca global jQuery

+1

Birden çok versiyona karşı iyi tavsiyeler ... ama paketlenmiş kütüphanelerle birlikte gelen bazı cms eklentileri var. 3+ jQuery/prototype sürümleri ile cms tarafından karıştırılan sayfalar gördüm. YUI'nin sürüm yaklaşımıyla birlikte gelen bir çözüm olup olmadığını merak ediyorum ... – mfeineis

+9

Birden fazla sürümü tek bir yüklemeye gerek duymak için geçerli gerekçeler var. sayfa. Üçüncü taraf bir JS uygulaması geliştirirsem bilinmeyen ortamlarda çalışırdı.Tüketici sayfasını gizlemeden ihtiyaç duyduğum jQuery sürümünü güvenilir bir şekilde kullanmam gerekiyor. –

+1

@RamenRecon "Üçüncü taraf JS uygulaması geliştirme" "jQuery gerektirir" LOLOLOLOLOLOLOLOLOL. – Raynos