首页 > Web开发 > 详细

学习 Sea.js 笔记(一)

时间:2015-11-11 10:09:17      阅读:299      评论:0      收藏:0      [点我收藏+]

为学习某开源项目, 里面使用了 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 ...)

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

 

 

学习 Sea.js 笔记(一)

原文:http://my.oschina.net/u/232554/blog/528752

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!