Seajs是什么及sea.js 由来,特点以及优势


Posted in Javascript onOctober 13, 2016

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>

<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>

代码如下:

//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优势,

传统模式:

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之后:

//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后面实现的逻辑对用户是透明的。

通过这篇博客能够对SeaJS脚本语言有所了解,后面文章介绍利用SeaJS编写模块。

Javascript 相关文章推荐
js静态作用域的功能。
Dec 25 Javascript
JavaScript 基础篇之运算符、语句(二)
Apr 07 Javascript
原生javascript实现无间缝滚动示例
Jan 28 Javascript
jquery实现点击消失的代码
Mar 03 Javascript
jquery如何判断表格同一列不同行input数据是否重复
May 14 Javascript
node.js中的fs.readlink方法使用说明
Dec 17 Javascript
javascript数组去重小结
Mar 07 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
Mar 07 Javascript
JS实现回到页面顶部动画效果的简单实例
May 24 Javascript
JS for...in 遍历语句用法实例分析
Aug 24 Javascript
Angular.js实现注册系统的实例详解
Dec 18 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
Aug 13 Javascript
使用jquery给指定的table动态添加一行、删除一行
Oct 13 #Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 #Javascript
JS取模、取商及取整运算方法示例
Oct 13 #Javascript
JavaScript中常用的验证reg
Oct 13 #Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
Oct 13 #Javascript
浅谈jquery上下滑动的注意事项
Oct 13 #Javascript
js中class的点击事件没有效果的解决方法
Oct 13 #Javascript
You might like
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
python使用mailbox打印电子邮件的方法
2015/04/30 Python
python类装饰器用法实例
2015/06/04 Python
python之Socket网络编程详解
2016/09/29 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
Reformation官网:美国女装品牌
2018/09/14 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
交通事故和解协议书
2014/09/25 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
先进个人总结范文
2015/02/15 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
文明医院的标语集锦!
2019/07/24 职场文书
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS