Sea.js是一个很纯粹小巧的模块加载器,它只解决一个问题:前端代码的模块化。通过Sea.js,可以将大量JavaScript代码封装成一个个小模块,然后轻松实现模块的加载和依赖管理。核心目标是给前端开发提供简单、极致的模块化开发体验.遵守 CMD (Common Module Definition)模块定义规范。一个文件就是一个模块。

关注源码:please refers to https://github.com/seajs/seajs
官网:http://seajs.org/docs/
文档:http://seajs.org/docs/#docs
社区:https://github.com/seajs/seajs/issues/271
项目构建工具:https://github.com/seajs/seajs/issues/538
SeaJs API:https://github.com/seajs/seajs/issues/266
http://yslove.net/seajs/
相关链接:http://docs.kissyui.com/
Sea.js的本质意义是通过模块化开发,来提高代码的可维护性。对工程师而言,是关注度分离,更将更多精力聚焦在代码本身的逻辑上。

有了Sea.js,我们就可以书写模块了。Arale则是一套满足支付宝需求的通用模块集合,是一套基于模块化的前端基础类库,目前具备100多个模块,简单易用。

Sea.js的核心设计思想:保持简单,职责清晰、性能优先和适度完备。
1. 对外保持使用接口的简单。Sea.js的常用API只有7个,使用者一旦了解,基本没什么记忆成 本,可以快速上手。
2. 内部实现代码尽可能简单。追求内部实现的简单有很多好处,比如,别人可以比较容易读懂源码,这样就能参与进来协同开发。源码简单,往往也意味着不太会有晦涩的bug存在。Sea.js的内部实现,一直在往“简单得明显没有bug”的方向努力。

3.职责清晰是让Sea.js的范畴明确,随时知道自己应该做什么,不应该做什么。一个框架,最怕的是需求膨胀,最怕的是复杂化。

4.性能优先是因为Sea.js是底层加载器,倘若性能不好,直接会影响页面性能,因此源码中有不少地方会刻意追求性能。

5.适度完备是从功能的层面看Sea.js的API是否能满足常用需求,同时又能通过插件机制对外提供适度的可扩展性。Sea.js不追求能够满足所有需求,而是追求2/8原则。

通常把通用的、底层的功能抽象出来,独立成一个个函数,比如,util.js

function each(arr) {
  // 实现代码
}

function log(str) {
  // 实现代码
}

如果遵守模块定义规范,就变成下面这样的:

define(function(require, exports) {
  exports.each = function (arr) {
    // 实现代码
  };

  exports.log = function (str) {
    // 实现代码
  };
});

MichaelDuan
1.8k 声望39 粉丝

引用和评论

0 条评论