Onların genel ad alanını kirletmeden bağımsız bir kütüphane olarak bir JavaScript API açığa çıkarmak istiyoruz. Sarıcıyı yarattım, böylece kendi gereksinimlerini http://requirejs.org/docs/faq-advanced.html'a göre kirletmiyorum. Şimdiye kadar sahip olduğum şeyi basitleştirdim, ancak bunun doğru yol olup olmadığından emin değilim ya da başka bir şekilde yapmam gerekiyorsa emin değilim. daha sonra yukarıdaki kodunu referans bir komut dosyası etiketi içerir ve olurdu bu kütüphaneyi kullananBir requireJS modülünü genel ad alanına göstermenin doğru yolu nedir?
var MyApi = MyApi || {};
var MyApiRequireJS = (function() {
// require.js pasted here
return {requirejs: requirejs, require: require, define: define};
})();
(function(require, define, requirejs) {
require.config({
baseUrl: 'js/scripts',
waitSeconds: 30,
});
define('myapi', ['jquery', 'underscore'],
function($, _) {
$.noConflict(true);
_.noConflict();
function api(method, args, callback) {
// do stuff here
}
return {api: api};
}
);
require(['myapi'], function(myapi) {
MyApi = myapi;
});
}(MyApiRequireJS.require, MyApiRequireJS.define, MyApiRequireJS.requirejs));
Siteler kullanarak api
MyApi.api('some_remote_method', {foo: 'bar'}, function(result) {
// handle the result
});
Eğer genel ad alanında olmak 'require' ve' define' istemiyoruz söylüyorsun ama genel ad olmak 'MyApi' ve' MyApiRequireJS' için mutlu musun? Neden diye sorabilir miyim? –
Onlar zaten require' ve 'global ad alanında MyApi'' den define' 'kullanıyor olabilir daha olasıdır (' MyApi' ı kullanmak için gidiyorum var değil, sadece basitlik için kullandık.) Benzer şekilde facebook connect api sadece global isim alanını 'FB' ile kirletir. –
"require" veya "define" kullanıyorlar mı? Bulabilir misin? Değilse, sorun yok. Küresel ad alanının ne olduğunu bilmiyorsanız, tanımladığınız tüm globals'ın kullanımda olmadığından emin olamazsınız. –