JavaScript模块化开发时非常重要的开发方式,由于JavaScript没有java那样的package的概念,那么JavaScript如何实现模块化开发呢?有如下方式:
1.function方式:
众所周知,JavaScript的作用域是function级别的,所以我们可以将我们的代码放在一个function中作为一个模块,这样做是非常方便简单的,但这样的方式有一个致命的问题就是,当模块很多时,会有多个function变量,这样会造成全局变量污染的问题。
var myModule=function(){
....
}
2.对象的方式:
由于function方式的模块化开发会污染全局变量,那么如何消除这个影响呢?我们可以将function模块放到对象{}中,这样多个function可以组成一个模块了。尽管这种方式解决了全局变量污染的问题,但仍然有不足的地方。我们可以随时修改对象{}中的成员变量。
var myModule={
var variance1;
var fun1=function(){
...
}
var fun2=function(){
....
}
}
3.立即执行的匿名函数:
如何完善对象方式的模块化开发呢?很简单的一个方式就是采用立即执行的匿名函数方式。这样我们就不能修改模块内的成员变量了。这种方式是JavaScript模块化的基础了。
var myModule=(function(){
var fun1=function(){
...
}
var fun2=function(){
...
}
})();
4.采用JavaScript的模块化开发库
以上的各种方式都是JavaScript原生方式的模块化开发。除了这些方式外,我们也可以使用RequireJS,SeaJS等第三方库。