我想使用类似requireJS
到modularise我的JavaScript的应用程序,但是,有一个特别的要求,我想见见我还没有想通了:封装requireJS及其模块
我足够满意require
和define
在全球空间,但是,我不希望模块,我导入require
全球可访问(即他们应该可以访问我的应用程序,但不能在同一页上运行的其他应用程序)。
在我看来,如果我打电话define('moduleA', function() { ... });
我可以通过require
函数访问该模块 - 全局 - 。它可能不会占用全局空间本身的一个变量,或者附加到window
,但它仍然感觉不好,因为其他应用程序确实不应该能够看到我的内部模块(更不用说潜在的命名冲突等) ,我可以使用contexts
来规避这种情况吗?)。
这似乎是从命名空间模块退后一步,并将它们全部包含在构建时的一个大型私有化函数中。
我可以有我自己的私人版本require
但我的模块(在不同的文件中)将无法访问define
。
我错过了什么,或者我只需要忍受这一点? (或者,也可以运行优化器将所有内容烧写到一个文件中 - 感觉就像我只是命名空间模块一样,如果我这样做的话,根本就不用打扰requireJS
)。
包装require/define很容易,但然后我的模块无法看到它们(从其他文件加载时)。 – Rhys
@Ryven看到我的编辑。 – idbehold