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 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); });