2
我理解一些proper name-spacing与leaking into the global-scope相关的Module Pattern帮助的问题是如何。CommonJS规范中概述的define()协议对我有什么帮助?
我也完全看到在CommonJS Specification中概述的require()
协议中规定的资源依赖性管理的价值。
但是,我对AMD define()
函数的用途和用途的好处感到迷惑。
为定义的CommonJS的签名是:
define(id?, dependencies?, factory);
此外...
- 我看到人们wrapping their Module Pattern plug-ins with
define()
时 BOTH建立在 全球范围内的对象。 - 包含正常模块 Pattern插件的文件也可异步加载 。
起初,它“看起来”还像另一个插件包装...直到我开始看到人们在模块模式旁边使用它。
所以我的问题是:
- 什么是
define()
协议 在CommonJS的规范 概述给我买? - 难道它更能说服人吗?
- 是否意味着取代模块化模式?
- 它以某种方式更快?
- 如果是这样,为什么?
所以......每一个对象被追加到全球定义对象吗? – 2011-05-19 18:45:44
@PrisonerZERO未附加。你只需调用'define'。定义将通过你的'require'回调传递回来。这些对象不存储在任何地方,它只是消息传递。尽管它们被缓存在某个地方。但不公开提供。 – Raynos 2011-05-19 18:47:05
因为它不存储在任何地方......我猜你应该只使用这种模式,当它不是一个持久对象,你想运行一次。 – 2011-05-23 12:36:52