Javascript模块化编程-初识[1]
JS模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心业务逻辑,其他都可以加载别人已经写好的模块。
但是,JS不是一种模块化编程语言,它不支持类,所以没有严格意义上的模块。为了实现模块化,类模块化应运而生。
1、原始写法:
模块就是实现特定功能的一组方法。
只需要把不同的函数简单的放在一起,就是一个模块。
Eg:
function t1(){
//...
}
function t2(){
//...
}
缺点:污染全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系。
2、对象写法:
为了解决原始写法的缺陷,可以把模块写成一个对象,所有模块成员都放在对象里面。
Eg:
var module1=new Object({
num:0,
Fn1:function(){
//...
},
Fn2:function(){
//...
}
});
缺陷:全局变量可以随意被改写。
3、立即执行函数写法
立即执行函数,可以达到不暴露私有成员的目的。
Eg:
var class1=(function(){
var num=0;
var fn1=function(){
//...
};
var fn2=function(){
//...
};
return {
m1:fn1,
m2:fn2,
};
})();
这种写法就是JS模块化的常规写法。
4、放大模式
如果一个模块很大,需要分成多个部分,就必须采用放大模式。
Eg:
var class2=(function(c1){
c1.fn3=function(){
//...
}
})(class1);
5、实现调用外部全局变量,Jquery etc.
独立性是模块化的一个重要特点,模块内部最好不要和其它外部成员直接交互。
为了实现模块化调用外部全局成员,必须显示地将其它变量输入模块。
Eg:
var class1=(function (Jq,ya){
//...
})(jQuery,YAHOO);
上面的模块实现了JQuery和YUI库。这样做的目的,保证了模块的独立性,还使得模块之间的依赖变得明显。