1.Seajs简介
Seajs,一个Web模块加载框架,追求简单、天然的代码书写和组织方式,:Sea.js 遵循 CMD 规范,模块化JS代码。依赖的自动加载、配置的简洁清晰,可让程序员更多地专一编码。
2.Seajs优缺点
优势:
1).提升可维护性。
2).模块化编程。
3).动态加载,前端性能优化
缺点:
1).学习文档偏少且混乱,会更改团队使用JS的编写习惯,必须使用模块化编程。
2).不太适合团队目前的状况,多JS文件但少改动,动态加载优点和模块化优点不明显。
3). 须要配套使用SPM工具,JS的打包和管理工具。
2.什么是CMD 和AMD ?
异步模块定义(AMD)是Asynchronous Module Definition的缩写,是 RequireJS 在推广过程当中对模块定义的规范化产出。
通用模块定义(CMD)是Common Module Definition的缩写,是SeaJS 在推广过程当中对模块定义的规范化产出。
RequireJS 和 SeaJS 都是模块化框架的表明,AMD和CMD,是他们各自定义模块化的方式,大同小异,主要是代码风格和API不一样。
3.Seajs如何使用?前端
一段代码教新手一目了然,快速上手!
代码以下:<script src="../js/examples-master/sea-modules/seajs/seajs/2.1.1/sea.js"></script>jquery
1
2
3
4
5
6
7
8
9
10
11
12
|
<script>
//配置js路径
seajs.config({
alias:{
"jquery"
:
"../examples-master/sea-modules/jquery/jquery/1.10.1/jquery.js"
}
});
//加载模块
seajs.use(
'../js/seajs/init'
,
function
($){
$(
"#test_div"
).click(
function
(){alert(1);});
});
</script>
|
代码以下:
程序员
1
2
3
4
5
|
//init.js
define(
function
(require,exports,module){
var
$ = require(
'jquery'
);
return
$;
});
|
Seajs就是如此简单,快来深刻学习吧!编程
由来:
在软件开发过程当中,模块化编程思想已经习觉得常了,模块化编程不只仅给开发团队带来效率方面上的好处,还可以让开发的项目或者产品维护成本大大下降。
那么,在WEB开发过程当中JS脚本语言已经不可或缺了,经过JS脚本语言可以带来更加温馨的人机交互和用户体验。可是,JS脚本的使用过程当中也会有出现引用依赖的混乱,那么JS脚本语言的模块化思想势必会获得你们普遍的承认,在这样的一个背景下,淘宝前端工程师玉伯带来了SeaJS脚本语言,让模块化编程思想进入到JS脚本的世界里。
特色:
SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,能够实现JavaScript的模块化开发及加载机制。与jQuery等JavaScript框架不一样,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。SeaJS的主要目的是令JavaScript开发模块化并能够轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,能够专一于代码自己的逻辑。SeaJS能够与jQuery这类框架完美集成。使用SeaJS能够提升JavaScript代码的可读性和清晰度,解决目前JavaScript编程中广泛存在的依赖关系混乱和代码纠缠等问题,方便代码的编写和维护。
SeaJS自己遵循KISS(Keep It Simple, Stupid)理念进行开发,其自己仅有个位数的API,所以学习起来毫无压力。在学习SeaJS的过程当中,到处能感觉到KISS原则的精髓——仅作一件事,作好一件事。
优点:从一个例子中来看SeaJS优点,
传统模式:性能优化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
var
M1={
run:
function
(){
alert(
'M1'
);
M2.run();
}
}
var
M2={
run:
function
(){
alert(
'M2'
);
}
}
<script src=
"./M2.js"
></script>
<script src=
"./M1.js"
></script>
|
使用SeaJS以后:前端工程师
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//init.js
define(
function
(require, exports, module) = {
var
m1=require(
'M1'
);
exports.init=
function
(){
m1.run();
}
});
//M1.js
define(
function
(require,exports,module)={
var
m2=require(
'M2'
);
exports.run=
function
(){
alert(
'M1'
);
m2.run();
}
});
define(
function
(require,exports,module)={
exports.run=
function
(){
alert(
'M2'
);
}
});
<script src=
"./sea.js"
></script>
<script>
seajs.use(
'./init'
,
function
(init) {
init.init();
});
</script>
|
经过两个简单的实例可以看出使用SeaJS以后代码的模块化很是清晰,而且在HTML页面中仅仅引用一个./sea.js文件而且仅仅调用init便可,具体init后面实现的逻辑对用户是透明的。框架
转载:http://www.jb51.net/article/94666.htm异步