TL;问题底部的DR,用于那些不想阅读我所有垃圾的人。将代码转换为RequireJS
我目前的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方法,但我也很喜欢将所有模块链接起来并命名空间的能力。
AMD的主要优势之一是失去对命名空间的依赖。尝试拥抱它。没有技术理由继续使用它们。 –