的JavaScript模块模式/组织/子模块
问题描述:
- 我想知道 之间有什么区别 (优势/劣势)以下模式。
- 如何在模块模式上创建基于 的子模块?
我的目标是让我的JS组织成多个文件是懒加载,但有一个命名空间。的JavaScript模块模式/组织/子模块
例如:
SO.global(global.js) SO.global.registration(registration.js)< - 负载
VS.
var SO = (function() {
var CONSTANT = 'Z';
function createX(){
alert("create X");
}
function getY(){
alert("get Y");
}
return {
create:createX,
get:getY
}
}());
答
你有没有考虑Require.JS?它试图提供以下解决方案:
- 某种#包括/进口/需要
- 加载嵌套的相关
- 易用性开发,但随后通过优化工具的支持,帮助部署 能力
Require.JS实现由Common.JS定义
答
这里有一个良好的阅读:http://snook.ca/archives/javascript/no-love-for-module-pattern,另有:http://lamb.cc/blog/category/javascript/
YUI使用它如饥似渴,因为这样做我,我还没有找到,我就被它限制任何情况下,它很好地与整合自定义模块的YUI依赖加载器。
(对不起,我知道这是不是一个完整的答案,但有一些给你的篡改信息)
有两个例子之间没有什么区别....一个周围有小括号,但他们SH的Module/Asynchronous Definition规范应该做同样的事情。 – rob 2010-11-04 20:44:05
第二个示例中的附加parens正被一些人用来指示立即调用函数表达式。 – 2010-11-04 21:05:00
虽然我认为那个公约在那个公约的错误位置。我相信它通常写成(function(){...})() – Gopherkhan 2010-11-05 17:53:25