Açık kaynak dağıtımı için tasarlanan ilk AngularJS modülümü oluşturuyorum. Başkalarının tüketmesi kolay bir şekilde paketlemek isterim. Angularjs kendi iç modül sistemi vardır çünkü kayıt,UMD'yi ihracat olmaksızın kullanmak, bir bağımlılığı basitleştirmek için makul midir?
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(['b'], factory); // AMD
} else if (typeof exports === 'object') {
module.exports = factory(require('b')); // Node
} else {
root.returnExports = factory(root.b); // browser global (root is window)
}
}(this, function (b) {
// use b in some fashion
return {}; // return a value to define the module export
}));
Ancak:
UMD projesi AMD, CommonJS (veya en azından Düğüm) ve tarayıcı globalsin uyumlu JavaScript modüllerinin ihraç için pattern sağlar Bir modül, angular
nesnesinde, yani angular.module()
'da bir yöntemi çağırmak suretiyle yapılır. Böylece, bir UMD modülünün herhangi bir şeyi ihraç etmesi gerekmeyecek; Sadece angular
numaralı telefona gereksinim duymanız ve işlem yapmanız gerekir.
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
factory(require(['angular'])); // AMD
} else if (typeof exports === 'object') {
factory(require('angular')); // Node
} else {
factory(root.angular); // browser global (root is window)
}
}(this, function (angular) {
angular.module(...);
}));
bu kadar büyük mi, yoksa ruhuna aykırıdır vermez: Benim durumumda özgü
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
factory(require(['b'])); // AMD
} else if (typeof exports === 'object') {
factory(require('b')); // Node
} else {
factory(root.b); // browser global (root is window)
}
}(this, function (b) {
// use b in some fashion
}));
Veya: Önceki örnekte açısından, ben şuna benzer düşünüyorum UMD? Soruyorum çünkü hiçbir şey vermeyen herhangi bir UMD modeli bulamadım.
Genelde, kütüphanenin hangi sürümünün ekleneceğini (sıkıştırılmış sıkıştırmaya karşı sıkıştırılmış) belirlemek için oluşturma aracına kaldığını iddia ediyorum. Ayrıca, eğer kütüphaneyi açısalya karşı geliştiriyorsa, bu kimsenin değil, açısını ve açısını almak oldukça mantıklıdır. Sadece iki sentim. – icfantv
Sadece "minified veya değil" hakkında konuşmak değilim, jquery vs zepto düşünün: tamamen farklı kütüphaneler, ancak% 99 aynı API, böylece jQuery dayanan hemen hemen herhangi bir eklenti zepto ile sadece iyi çalışır ... sağlanan kendi jantını yüklemiyor. Benimle aynı API'ye sahip bir kütüphaneye sahip olabilirdim, bu durumda benim için açısal modül yükleyen modül, yararlı olanın tersi olacaktır. –
Bu durumda, doğru uygulamanın, üçüncü taraf kitaplığının tutarlı bir API sağlamak için uygulayacağı bir arabirim olacağını iddia ediyorum. Ama bu, @Bungle, açısal bir JS modülünü yazmak istediğini belirttiğinden beri tüm bu tartışmalardan biri. Bu nedenle, eğer istemiyorsa başka bir kütüphaneyi desteklememelidir - özellikle de modülün inşa edildiği temelde açısal olduğu ve tartışmalı olarak açısal web uygulamaları için temel oluşturduğu için. Ancak tarihler hakkında konuşuyorsak, size% 100 katılıyorum. – icfantv