模块化js

JS不像java那样

java的模块化:

下面这个class就是一个模块,专门处理人的事情

public class Person{

         //定义名字

private String name ;

        //获取名字

public String getName(){

        return this.name;

}

        .......

}


javascript的模块化:

//通常的做法,这种方式,不能定义私有数据

var module = {

  name : '',

  getName :  function(){

    return this.name;

   }

}


//另一种做法,可以保存私有变量,但是变量共享,

var module = (function(){

var name = "";

        function getName(){

return name;

}

      return {

        getName:getName

}

})();


//再加上一种方式,只执行一次,不共享,便于组件的开发 new xx()

var module = (function(){

var name = "";

        function getName(){

return name;

}

       return function(){

             var private_name;

            this.getName = getName;

}

})();

//但是模块的继承与复用,该用什么方式呢,java中有extend 与implement 关键写来处理如

  public Man extend Person{

      .......

 }

javascript的处理方式呢

var extend = function(child,parent){//继承不了 构造函数里的属性与方法
var F = function(){};
F.prototype = parent.prototype;
child.prototype = new F();
child .prototype.constructor = parent;
child .super = A.prototype;//实现子调用父类的方法
};

//其实说到底,模块化,就是一种规范,现在javascript的规范,一种是CommonJs 一种是AMD

CommonJs的实现如nodejs的require([module])形式,等待文件加载完成,进行下面的操作,主要是同步的方式读取磁盘上的文件,如果在浏览器端执行,会造成等待,

同步的操作,浏览器卡死现像


AMD是异步加载模块,便于在浏览器端使用,实现有require.js curl.js

require ([module], callback); 

如:

require (['math'], function (math) {
    math.add (2, 3);
}); 

你可能感兴趣的:(模块化js)