【发布时间】:2013-08-13 14:48:14
【问题描述】:
假设我有一个 JS 库,整齐地包裹在 define('myModule', function(myModule) { return myModule.someObject; }); 中
如何在不使用 requirejs 或任何其他模块处理框架的情况下将 myModule.someObject 绑定到全局范围(请不要问为什么,我知道模块化编程比将内容放在全局范围内有很多好处)?
问题是:在开发过程中,我想使用 requirejs。我们构建的库应该能够被使用 requirejs(AMD、CommonJS 等)的人包含,但也应该以 window.SomeObject 的形式提供给那些不想使用 require 的人,只是为了能够使用我们的SomeObject。开发阶段结束后,所有代码将被压缩并混淆为单个 JS 文件。
我想我只是在用错误的搜索词进行谷歌搜索,因为我只能找到一个问题的答案,即如何包含未包含在 requirejs 友好 define 函数中的代码。
对此的任何想法将不胜感激。谢谢!
--- 编辑 ---
我的文件(在一切开始之前)看起来像:
(function(define, global) {
define([a,b,c],function(theA, theB, theC) {
return theA + theB + theC; // or something, it doesn't matter
});
})(define, this);
我在想这样的事情:
(function(define, global) {
// same as above
})(typeof define === 'function'
? define
: function(factory /* need more args? */) { /* solution here */ }, this);
但我不确定如何正确实现它......
【问题讨论】: