这里有新鲜出炉的精品教程,程序狗速度看过来!
SeaJS 是一个遵循 CommonJS 规范的 JavaScript 模块加载框架,可以实现 JavaScript 的模块化开发及加载机制。与 jQuery 等 JavaScript 框架不同,SeaJS 不会扩展封装语言特性,而只是实现 JavaScript 的模块化及按模块加载。SeaJS 的主要目的是令 JavaScript 开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的 JavaScript 文件及对象依赖处理中解放出来,可以专注于代码本身的逻辑。
这篇文章主要介绍了 Seajs 的相关知识和和学习心得, 适合刚接触 SeaJS 的同学, 需要的朋友可以参考下,有更好的新手教程或文档,欢迎推荐、分享
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>
- //配置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 编写模块。
来源: http://www.phperz.com/article/17/0524/331203.html