SeaJS的简单使用

SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。与jQueryJavaScript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。

工厂函数factory解析

在我们自定义的js文件中,我们使用define来定义一个模块,define方法require中的一样,第一个参数可以传递一个模块,当然也可以不写(可选第二个参数是一个匿名函数,不同于requireJS的是seaJS匿名函数存在三个参数,三个参数有不同的意义,建议不要省略,并且名称也不建议修改(形参可以修改名称的嘛)下面我们来看看这三个参数的含义:

1、 require——模块加载函数,用于记载依赖模块

2、 exports——接口点,将数据或方法定义在其上则将其暴露给外部调用。

3、 module——模块的元数据。

test02.js

define(function(require,exports,module){

var date1 = "哈哈,我是test02.js中的变量date1,我是私有的";

//exports定义的变量是公共,在其他模块中可以调用

exports.date2 = "哈哈,我是test02.js中的变量date2,我是公共的";

var fn1 = function() {

alert("哈哈,我是test02.js的函数fn1,我是私有的");

}

fn1();

var fn2 = function() {

alert("哈哈,我是test02.js的函数fn2,我是私有的");

}

//exports定义的函数(方法)是公共,在其他模块中可以调用

exports.fn3 = function() {

alert("哈哈,我是test02.js的函数fn3,我是公共的");

}

});

test03.js

define(function(require,exports,module){

//require用于导入所需的模块

//载入a模块,我们可能在这个文件中使用test02.js

var test02 = require("test02");

alert("--------------------------------");

/**

 * 虽然变量也是使用exports声明的

 * 但是变量的话,只有在seajs.use方法中可以调用

 * 在其他模块中照样不能调用,注意!!

 */

alert(test02.data2);

/**

 * 在其他模块(test03.js)中,可以调用

 * test02.js中的exports声明的方法

 * 方法一旦被exports声明,代表着公开

 */

test02.fn3()

alert("--------------------------------");

var date1 = "哈哈,我是test03.js中的变量date1,我是私有的";

//exports定义的变量是公共,在seajs.use方法中可以调用

exports.date2 = "哈哈,我是test03.js中的变量date2,我是公共的";

var fn1 = function() {

alert("哈哈,我是test03.js的函数fn1,我是私有的");

}

var fn2 = function() {

alert("哈哈,我是test03.js的函数fn2,我是私有的");

}

//exports定义的函数(方法)是公共,在其他模块中可以调用

exports.fn3 = function() {

alert("哈哈,我是test03.js的函数fn3,我是公共的");

}

fn1();

fn2();

});

页面

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<script type="text/javascript" src="js/sea.js" ></script>

<script type="text/javascript">

seajs.use("test03",function(t3) {

//t3.fn1();//报错,因为没有公共化

//t3.fn2();//报错,因为没有公共化

t3.fn3();//正确,因为使用了exports声明,此时这个方法公共化

//在这里可以调用使用exports声明的变量

alert(t3.date2)

});

</script>

</head>

<body>

<h1>seajs Demo</h1>

</body>

</html>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值