2013-04-29 14 views
5

Bir fukayı önlemek için modernizr'i başa senkronize olarak yüklemek istiyorum. Özellik algılaması ve benzeri şeyler için modernizr kullanmak istediğim bazı komut dosyalarını yüklemek için, önce/gövdede require.js kullanıyorum.Modernizr'i başa yükleyin, ancak require.js içinde kullanın.

Bunu yapmanın doğru yolu nedir, yoksa bunu yapması bile tavsiye edilir mi? Eğer senaryolarımda modernizme ihtiyacım varsa, tekrar yüklenir, eğer yapmazsam, tanımsızdır.

Şimdiden teşekkürler. Böyle basit bir sarıcı tanımlayabilirsiniz böylece :)

cevap

9

Modernizr kafasına yüklenen 1 script ise, o zaman, her yerden erişilebilir:

define('modernizr', function() { return window.Modernizr }); 

Bu kod böyle wrappers.js içine koymak edilebilir:

main.js içinde sonra
<head> 
<script src="/js/vendor/modernizr.js"></script> 
<script src="/js/vendor/require.js"></script> 
<script src="/js/wrappers.js"></script> 
<script src="/js/main.js"></script> 
</head> 

var scripts = document.getElementsByTagName('script') 
    , src = scripts[scripts.length - 1].src 
    , baseUrl = src.substring(src.indexOf(document.location.pathname), src.lastIndexOf('/')) 

require.config({ 
    baseUrl: baseUrl 
}) 
+0

Eğer yapılandırma d sizin gerektiren hemen sonra bu tanımlar misiniz eclaration? Ya da bir wrappers.js dosyası gibi bir şeyiniz var mı ve bu küçük tanımların çoğuna sahip misiniz? Pencere nesnesinden bir şey döndürmek istediğiniz her zaman burada bir kullanım görebiliyordum. Özellikle test etmek için o zaman global nesneyi gerçekten kolayca alayabileceksiniz – Neil

+0

Op sorusu için, requirejs'nin otomatik olarak yüklediği 'data-main' özniteliğinde belirtilen main.js dosyasında yapılandırma gerektirdikten hemen sonra yerleştiririm. Ancak, ayrı bir dosyaya koymanız gerekiyorsa, bu komut dosyaları doğru sırada yüklenmeli ve main.js, baseUrl'yi tanımlamalıdır. –

+0

main.js'de yer aldı ve bir çekicilik gibi çalışıyor :) – shapeshifta