Javascript 封装requireJS及其模块
我想使用像requireJS这样的东西来模块化我的javascript应用程序,但是,有一个我想满足的特殊需求,我还没有弄清楚: 我很高兴在全局空间中有require和define,但是,我不希望使用require导入的模块可以全局访问,也就是说,它们应该可以访问我的应用程序,但不能访问同一页面上运行的其他应用程序 在我看来,如果我调用define'moduleA',函数{…};然后,我可以通过require函数全局访问该模块。它可能没有占据全局空间本身的变量,或者没有连接到窗口,但感觉还是很糟糕,因为其他应用程序确实不能看到我的内部模块,更不用说潜在的命名冲突等等,我可以使用上下文来规避吗 这似乎是对我的模块命名的倒退,在构建时将它们全部包含在一个大型私有化功能中 我可以拥有自己的require私有版本,但我的模块位于不同的文件中,无法访问defineJavascript 封装requireJS及其模块,javascript,requirejs,Javascript,Requirejs,我想使用像requireJS这样的东西来模块化我的javascript应用程序,但是,有一个我想满足的特殊需求,我还没有弄清楚: 我很高兴在全局空间中有require和define,但是,我不希望使用require导入的模块可以全局访问,也就是说,它们应该可以访问我的应用程序,但不能访问同一页面上运行的其他应用程序 在我看来,如果我调用define'moduleA',函数{…};然后,我可以通过require函数全局访问该模块。它可能没有占据全局空间本身的变量,或者没有连接到窗口,但感觉还是很糟
是我错过了什么,还是我不得不忍受?或者,运行一个优化器将所有内容烘焙到一个文件中——感觉我可以为我的模块命名名称空间,如果我这样做的话,根本不必为requireJS操心。在r.js build config add wrap:true中,您将不再使用require或define函数污染glabal范围 编辑: 您还可以根据需要指定名称空间,并在r.js构建配置中使用名称空间设置进行定义。你可以。从评论中:
// Allows namespacing requirejs, require and define calls to a new name.
// This allows stronger assurances of getting a module space that will
// not interfere with others using a define/require AMD-based module
// system. The example below will rename define() calls to foo.define().
// See http://requirejs.org/docs/faq-advanced.html#rename for a more
// complete example.
namespace: 'foo',
包装require/define很容易,但是当从其他文件加载时,我的模块无法看到它们。