1 / 5
文档名称:

JavaScript模块化开发一瞥(精选).doc

格式:doc   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

JavaScript模块化开发一瞥(精选).doc

上传人:doubifan753557 2015/10/4 文件大小:0 KB

下载得到文件列表

JavaScript模块化开发一瞥(精选).doc

相关文档

文档介绍

文档介绍:对于那些初学JavaScript、同时又正用它构建大型应用程序的开发者而言,必须面对的首要挑战是,该如何组织代码。尽管起初通过在<script>标记之间嵌入数百行代码就能跑起来,不过很快代码会变得一塌糊涂。其中的难点在于,对于组织我们的代码,JavaScript并未提供任何明显帮助。从字面上看,C#有using,Java有import——而JavaScript一无所有。这就迫使JavaScript作者去尝试各种不同约定(conventions),并用我们拥有的这种语言创建了一些实践方法来组织大型JavaScript应用程序。
形成现代JavaScript基础的那些模式、工具及实践必将来自语言本身以外的实现
—— a Murphy
模块模式(The Module Pattern)
解决此问题使用最为广泛的方法是模块模式(Module Pattern)。我尝试在下面解释一个基本示例,并谈论它的一些属性。对于各种不同方法更好的描述和梦幻般的运行,请参阅Ben Cherry的帖子——JavaScript Module Pattern: In-Depth(深入理解JavaScript模块模式)。
(function(lab49) {
function privateAdder(n1, n2) {
return n1 + n2;
}
= function(n1, n2) {
return privateAdder(n1, n2); // 原文代码有误,已修正。
};
})( = || {});
上面的示例中,我们只使用一些来自语言本身的基本功能,就创建了曾在C#和Java等语言中见过的类似结构。
隔离(Isolation)
你会注意到这段代码包在一个立即调用的函数里(查看最后一行)。在浏览器中,默认情况下会在全局范围(global scope)级别上对JavaScript文件进行评估(evaluated),因此在我们在文件内声明的任何内容都是随处可用的。想象一下, name = '...', name = '...'。那么第二个var语句会替掉第一句的值——这可不太妙。然而,由于JavaScript拥有函数作用域(function scoping)级别,上例中所声明的一切都在该函数自身作用域中,与全局作用域相脱离。这意味着,无论未来在系统中发生什么,位于该函数中的任何内容都会被隔离开来。
命名空间(Namespacing)
在最后一行中,,要么把空对象直接量(empty object literal)赋给它。尽管看起来有些奇怪,但是让我们一起看下某个虚构的系统,在那里我们拥有若干js文件,所有文件都用了上例中的函数包装器(function wrapper)。
首个包含进来的文件会评估OR(逻辑或)语句,并发现左侧表达式为undefined(未定义)。由于undefined是虚假值(falsely value),因此OR语句会继续评估右侧表达式,本例中是个空对象直接量。此OR语句实际上是个会返回评估结果的表达式,然后将