CommonJS 规范中概述的 Define() 协议给我带来了什么?
我了解 正确的名称间距 和 < a href="http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth" rel="nofollow noreferrer">模块模式帮助与泄漏到全局范围相关的问题。
我还完全看到了 require() 协议中提供的资源依赖管理的价值。 “nofollow noreferrer”>CommonJS 规范。
然而,我对 AMD define()
函数的使用和目的的好处感到困惑。
定义的 CommonJS 签名是:
define(id?, dependencies?, factory);
另外...
- 我看到人们 包装他们的模块
使用
define()
时的模式插件 两者都创建一个对象 全球范围。 - 包含普通模块的文件 可加载图案插件 也是异步的。
起初,它“看起来”像是另一个插件包装器......直到我开始看到人们将它与模块模式一起使用。
所以我的问题是:
-
define()
协议是什么 CommonJS 规范中概述 买我吗? - 是不是更加雄辩一些?
- 它是否意味着取代模块化模式?
- 它是否更快?
- 如果是这样,为什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Define 是一种在不依赖全局作用域的情况下传递模块化对象的好方法。
不过,define 的特定 API 因库而异。
这里的基本思想是,您在文件中调用定义来定义该模块是什么。然后,当您需要该文件时,您将获得该模块。这消除了全球范围内的中间人。
但它并没有更快(它比注入全局范围更慢)。
使用
require
和define
你只有两个全局值。上面的特定
define
示例与 requireJS API 匹配Define is a great way to pass modular objects back without relying on global scope.
The particular API of define varies from library to library though.
Here the basic idea is that you call define in a file to define what that module is. Then when you require the file you get the module. This cuts out the middle man that is global scope.
It's no faster though (It's slower then injecting into global scope).
Using
require
anddefine
you only have two global values.The particular
define
example above matches the requireJS API