封装需要JS及其模块
Encapsulating requireJS and its modules
我想使用类似requireJS
的东西来模块化我的javascript应用程序,但是,我想满足一个我还没有弄清楚的特殊要求:
我很高兴在全球空间中拥有require
和define
,但是,我不希望我导入的模块require
可以全局访问(即它们应该可供我的应用程序访问,但不能在同一页面上运行的其他应用程序)。
在我看来,如果我调用define('moduleA', function() { ... });
,我就可以通过require
函数全局访问该模块。它可能没有占用全局空间本身的变量,或者附加到window
,但仍然感觉很糟糕,因为其他应用程序真的不应该看到我的内部模块(更不用说潜在的命名冲突等,我可以使用contexts
来规避这一点吗?
这似乎比仅仅命名我的模块并在构建时将它们全部包含在一个大型私有化函数中退后一步。
我可以有自己的私人版本require
但我的模块(在不同的文件中)无法访问define
。
我错过了什么还是我只需要忍受这个?(或者,运行优化器将所有内容烘焙到一个文件中 - 感觉我可以命名空间我的模块,如果我这样做,根本不会打扰requireJS
)。
在你的 r.js 构建配置中添加wrap: true
,你将不再用require
或define
函数污染光板范围。
编辑:
还可以使用 r.js 生成配置中的namespace
设置为require
和define
指定命名空间。您可以在 RequireJS 的常见问题解答中阅读有关命名空间的更多信息。从 example.build 中.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',
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- Node.js正在更改应用程序以使用集群模块
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 如何在Mocha/Chai中测试JS原型(非模块)
- 如何定义一个模块并使用它来分离js文件
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- 如何引用HTML中节点模块中的js文件
- 使用Ampersand.js路由模块化应用程序
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- module.js在运行iron节点时找不到模块
- 尝试从命令行将android平台添加到ionic时,模块.js:341处出现错误
- 节点抛出模块.js:340错误
- 在 ejs 中使用节点模块/.js函数
- 用于节点的FTP模块.js可以同步文件
- 从 Drupal 7 中的模块.js文件调用全局 JS 函数
- 使用 Socket.io 将套接字传递到 Node 中的模块.js
- JavaScript - 如何注入不同的函数实现,例如 alert(与 web 和 Node 共享模块.js服务器端)
- JavaScript 中有没有办法在原型私有(使用模块 JS 模式)方法中提供对变量的访问
- NODE的捆绑模块.JS