मैं अपने वैश्विक नामस्थान को प्रदूषित किए बिना एक स्टैंडअलोन लाइब्रेरी के रूप में जावास्क्रिप्ट एपीआई का खुलासा करना चाहता हूं। मैंने रैपर बनाया है इसलिए मैं http://requirejs.org/docs/faq-advanced.html के अनुसार अपनी खुद की आवश्यकता जेएस प्रदूषित नहीं करता हूं। मैंने अभी तक जो कुछ भी किया है, उसे सरल बना दिया है, लेकिन मुझे यकीन नहीं है कि यह सही तरीका है या यदि मुझे इसे किसी अन्य तरीके से करना चाहिए।वैश्विक नामस्थान में आवश्यकता जेएस मॉड्यूल का पर्दाफाश करने का सही तरीका क्या है?
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));
इस लाइब्रेरी का उपयोग कर एक स्क्रिप्ट टैग के ऊपर कोड का संदर्भ देते तो शामिल होंगे और साइटें, एपीआई का उपयोग कर
MyApi.api('some_remote_method', {foo: 'bar'}, function(result) {
// handle the result
});
आप कह रहे हैं आप 'नहीं करना चाहती require' और' define' ग्लोबल नेम स्पेस में हो सकता है, लेकिन आप 'MyApi' और' MyApiRequireJS' के लिए खुश ग्लोबल नेम स्पेस में होने की हो? क्या मैं 'पूछ सकता हूँ क्यों? –
यह अधिक संभावना है कि वे पहले से ही उपयोग कर रहे हैं 'require' और' 'अपने वैश्विक नाम स्थान में MyApi' से define' है (' MyApi' वर मैं उपयोग करने के लिए जा रहा हूँ नहीं है, सिर्फ सादगी के लिए इस्तेमाल किया है।) इसी प्रकार फेसबुक कनेक्ट एपीआई केवल 'एफबी' के साथ वैश्विक नेमस्पेस को प्रदूषित करता है। –
क्या वे 'आवश्यकता' या 'परिभाषित' का उपयोग कर रहे हैं? क्या तुम्हें ये पता लग सकता है? यदि नहीं, तो कोई समस्या नहीं है। यदि आप नहीं जानते कि उनका वैश्विक नामस्थान क्या उपयोग करता है, तो आप यह सुनिश्चित नहीं कर सकते कि आपके द्वारा परिभाषित किए गए किसी भी ग्लोबल्स पहले से ही उपयोग में नहीं होंगे। –