Я хочу представить Javascript API в качестве отдельной библиотеки, не загрязняя их глобальное пространство имен.Я создал обертку, чтобы не загрязнять их собственные requireJS в соответствии с 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));
Сайты, использующие эту библиотеку, будут включать тег сценария, ссылающийся на приведенный выше код, а затем вызывать API с помощью
MyApi.api('some_remote_method', {foo: 'bar'}, function(result) {
// handle the result
});