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 相关文章推荐
javascript字典探测用户名工具
Oct 05 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
Jan 09 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
Jul 18 Javascript
JS打印组合功能
Aug 04 Javascript
浅析Javascript的自动分号插入(ASI)机制
Sep 29 Javascript
基于vue实现多引擎搜索及关键字提示
Mar 16 Javascript
js replace 全局替换的操作方法
Jun 12 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
vue模仿网易云音乐的单页面应用
Apr 24 Javascript
简单学习5种处理Vue.js异常的方法
Jun 17 Javascript
vue中监听路由参数的变化及方法
Dec 06 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语法(2)
2006/10/09 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
js indexOf()定义和用法
2012/10/21 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
JavaScript实现简单的数字倒计时
2015/05/15 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
python实现查询苹果手机维修进度
2015/03/16 Python
整理Python最基本的操作字典的方法
2015/04/24 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
python机器学习之神经网络(一)
2017/12/20 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
Django REST 异常处理详解
2020/07/15 Python
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
高中生期末评语大全
2014/01/28 职场文书
社会实践活动总结报告
2014/04/29 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
转正申请报告格式
2015/05/15 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL