Win*_*ian 9 javascript requirejs
我想将Javascript API公开为独立库,而不会污染其全局命名空间.我创建了包装器,所以我不会根据http://requirejs.org/docs/faq-advanced.html污染他们自己的requireJS .我已经简化了我到目前为止所拥有的内容,但我不确定这是否是正确的方法,或者我是否应该采取其他方式.
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));
Run Code Online (Sandbox Code Playgroud)
使用此库的站点将包含引用上述代码的脚本标记,然后使用api调用api
MyApi.api('some_remote_method', {foo: 'bar'}, function(result) {
// handle the result
});
Run Code Online (Sandbox Code Playgroud)
小智 0
我认为你试图通过将别人的问题变成你的问题来预测别人的问题,但我认为你不能真正合理地做到这一点。您链接到的页面旨在让已经拥有名为“require”或“define”的 Javascript 全局变量的用户将 RequireJS 全局变量重命名为不同的名称。它并不是为了创建两个单独的 RequireJS 实例来独立解析依赖关系。
也就是说,如果您真的想最大程度地减少名称空间污染,那么您应该只公开一个名称 - MyApi。编写一个巨大的闭包,其中包含您的 RequireJS 私有副本以及 API 代码,并让它仅返回您想要在 API 上公开的方法。
以两个版本提供 API 可能会更友好/更简单,一个版本定义了 requireJS 模块,另一个版本没有 requireJS 依赖项。
| 归档时间: |
|
| 查看次数: |
1763 次 |
| 最近记录: |