2012-09-24 43 views
18

Temelde istemci tarafında da kullanılabilen bazı yararlı JS olan bir düğüm modülü oluşturdum. Require.js'nin common.js bileşenlerini yükleyebildiğini biliyorum, ancak modül istemcimi kullanan herkesin ayrıca bir gereksinim veya common.js veya bir şeye ihtiyacı olduğunu bir görev yapmak istemiyorum. Ayrıca, dosyanın altındaki module.exports = ...'u kaldırmaya zorlamak istemiyorum. Diğerleri bu sorunu nasıl çözer? Daha çok 2 sürüm veya 2 "derlenmiş" sürüm oluşturuyor musunuz? Module.exports her yerde çalışıyor mu?module.exports istemci tarafı

if (typeof exports !== 'undefined') { 
    if (typeof module !== 'undefined' && module.exports) { 
    exports = module.exports = _; 
    } 
    exports._ = _; 
} else { 
    root['_'] = _; 
} 
+2

Bildiğim kadarıyla bu konuda en iyi açıklama, http://www.2ality.com/2011/11/module-gap.html. Yazar avantaj/dezavantaj ve geliştirme/dağıtım modlarını tartışıyor. –

cevap

16

. 'Ad Alanı' Varsayalım sen Sonra tarayıcıda node.js içinde require('namespace').my === 'cool' veya Namespace.my === 'cool' kullanabilirsiniz istemci

(module ? {}).exports = @Namespace = 
    my: 'cool' 
    module: '!' 

için window kapsamına iddia istediğiniz şeydir.

try { 
    module.exports = exports = MyModule; 
} catch (e) {} 

Bu dosya tarayıcısı ve node.js. hem dahil edilebilir: Bu benim bu basit bulmak

(typeof module !== "undefined" && module !== null ? module : {}).exports = this.Namespace = { 
    my: 'cool', 
    module: '!' 
}; 
+0

Ahh yea bu harika! – Parris

+0

Başarıyla aktarıldığını kontrol etmek için kodun bu bölümünü nasıl test edeceğinizi merak ediyorum. – Jun

4

Bu benim (CoffeeScript) için çalışmıştır: Bu underscore.js yaptığı iştir

İlgili konular