TL; DR 在问题的底部,对于那些不想阅读我所有垃圾的人。
我目前的 JavaScript 模块化方法是简单地创建一个全局锚点,例如“csc”(我公司的首字母缩写词),然后开始在其上添加模块。
所以我最终会得到一个全局结构,如:
csc.
Utils
Map
.Geolocation
Storage.
Cookie
DB
这些文件中的每一个都存储在一个目录结构中:
csc.js
csc.Utils.js
csc.Map.js
csc.Storage.js
这消除了一直加载我的整个代码库的需要。
我正在尝试过渡到使用 RequireJS,但该库采用的方法似乎有点不同。
为了维护我的命名空间结构,我可以围绕我的所有模块定义模块,但仍然将它们添加到全局“csc”引用中。然而,这似乎违背了 Require 的核心原则。
但是,如果不将它们保持在全局范围内,我就会失去我漂亮的命名空间,例如“csc.Map.Geolocation”,因为我现在有一堆单独的变量,如下所示:
require(['csc', 'csc.Utils', 'csc.Map'], function (csc, utils, map) {
});
如果我上面可怕的描述还不够,我会将我的问题归结为本质:
有没有办法,也许在模块定义中,将这三个变量组合回这个问题顶部定义的结构?还是我做错了,我应该坚持 Require 做事的方式吗?我很想遵循 Require 方法,但我也喜欢让我的所有模块都可链接和命名空间的能力。