在介绍SeaJS模块编写和引用之前先介绍一下关于SeaJS模块化的使用原则。
使用SeaJS开发JavaScript的基本原则就是:一切皆为模块。引入SeaJS后,编写JavaScript代码就变成了编写一个又一个模块,SeaJS中模块的概念有点类似于面向对象中的类——模块可以拥有数据和方法,数据和方法可以定义为公共或私有,公共数据和方法可以供别的模块调用。另外,每个模块应该都定义在一个单独js文件中,即一个对应一个模块。
知道了这些之后我们再来学习模块的编写,载入和引用。
模块编写:
SeaJS中使用define函数定义一个模块。define可以接收三个参数:require, exports, module。
require——模块加载函数,用于记载依赖模块。
exports——接口点,将数据或方法定义在其上则将其暴露给外部调用。
module——模块的元数据。
关于模块的几种写法:
第一种是教科书式的写法,也是最常用的一种写法。
define(function(require, exports, module) {
var a = require('a'); //引入a模块
var b = require('b'); //引入b模块
var data1 = 1; //私有数据
var func1 = function() { //私有方法
return a.run(data1);
}
exports.data2 = 2; //公共数据
exports.func2 = function() { //公共方法
return 'hello';
}
});
第二种方法是抛弃exports和module的方式:
define(function(require) {
var a = require('a'); //引入a模块
var b = require('b'); //引入b模块
var data1 = 1; //私有数据
var func1 = function() { //私有方法
return a.run(data1);
}
return {
data2: 2,
func2: function() {
return 'hello';
}
};
});
第三种方式:类似于JSON写法,其实就是没有方法的一种写法。
define({
data: 1,
func: function() {
return 'hello';
}
});
通过这三种方式应该对模块的编写有所了解了,估计你已经迫不及待的想去写几个模块尝试一下了,那就快点来写吧。