文档章节

学习 Sea.js 笔记(一)

刘军兴
 刘军兴
发布于 2015/11/11 09:37
字数 431
阅读 132
收藏 1

为学习某开源项目, 里面使用了 sea.js, 为此而学习, 网址是: http://seajs.org/docs/#docs

模块化的价值 (解决什么问题):

命名冲突问题. 命名空间可缓解冲突, 但太长难记忆. 如何优雅地解决?

烦琐的文件依赖: 当项目越来越复杂, 文件依赖也快速增长. 如何优雅地解决?

前端开发的两个经典问题: 命名冲突, 文件依赖.

== 使用 Sea.js 解决 ==

需要遵守 CMD(Common Module Definition)模块定义规范.
一个文件就是一个模块. 如:

define(function(require, exports) {
   var other = require('path-to-other-js');
   exports.func1 = function ... body;
   exports.func2 = etc...
});

通过 require 获得(其它模块)通过 exports 暴露的接口. 可认为是扩展出了一个关键字(by sea.js).
通过 exports 对象向外提供接口.

通过 require (仿关键字) 类似于 c #include, java,python import 等.

例子2:

seajs.use('some-thing', function(A-object) {
   A-object.foo(...);
}

需要做: 首先在页面引入 sea.js, 其它地方想使用某个模块, 则使用 seajs.use() 方法.

于是:
1. 通过 exports 暴露接口, 不需要依赖命名空间了.
2. 通过 require 引入依赖(模块), 开发者不用关心太多了...

其它好处:
1. 模块版本管理;
2. 提高可维护性: sea.js 提供 nocache, debug 等辅助插件
3. 前端性能优化: 模块是异步加载的. 还提供 combo, flush 等插件.
4. 跨环境共享模块: CMD 与 node.js 模块规范接近, 方便与server端 js 共享.

前端模块化构建两大类:
1. 大教堂模式. (Dojo,YUI3,KISSY...)
2. 集市模式. (jQuery,RequireJS,Sea.js ...)

长远来看, 小而美更具备宽容性和竞争力, 更能形成有活力的生态圈.

 

 

© 著作权归作者所有

刘军兴
粉丝 60
博文 189
码字总数 237645
作品 0
昌平
私信 提问
学习 Sea.js 笔记(三)

== require 书写约定 == 必须名为 require. define(function(require) { // 正确写法... ... }); 不用修改, 不要重命名 require (可能构造工具会查找名字 require?) 后续文档说是通过正则匹配...

刘军兴
2015/11/11
59
0
学习 Sea.js 笔记(二)

写模块: define(function(require, exports, module) { 使用 require(...) 引入模块. 通过 exports.something = ... 对外提供接口 或通过 module.exports = ... 提供整个接口 ? }); 构建部署...

刘军兴
2015/11/11
67
0
编程类开放书籍荟萃(转载)

关于开源图书有人在网络上做了大量整理,本文为大家刊载《免费的编程中文书籍索引》 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。 stackoverflow 上的程序员应该阅读的非编程...

行者PHPer
2016/10/09
170
0
免费的编程中文书籍索引

免费的编程中文书籍索引,欢迎投稿。 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。 stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版 github 上的一个流行的编...

modernizr
2014/04/08
7.4K
24
免费的计算机编程类中文书籍

免费的编程中文书籍索引,欢迎投稿。 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。 stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版 github 上的一个流行的编...

justjavac
2014/08/13
3K
10

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部