SeaJS 文摘
我使用 SeaJS 的缘起比较复杂,要从去年3月份开始的项目说起。那个项目的架构师是 @lenel 。 项目的中心思想是前端代码复用,快速开发投到各处的广告牌,同时开放给用户定制广告牌的内容。
后者的解决办法是给广告牌统一数据接口,所有的广告牌模板使用统一的数据格式,不赘述。 前者,JavaScript 代码复用的解决办法,正是使用模块加载器。只不过,这个模块加载器叫做 kslite,是 @lenel 童鞋的作品。
在 kslite 里,模块的包装是这样的:
// cc/modules/mod1.js
KSLITE.declar(['cc/modules/dep1', 'cc/modules/dep2'], function(require, exports, module) {
var dep1 = require('cc/modules/dep1');
var dep2 = require('cc/modules/dep2');
// expose methods
exports.exe = function() {};
// or this way
module.exports = {
app: function() {}
};
});
SeaJS 对它的改进在于,dependencies
数组不再是必须的,可以使用相对路径 require
模块。
除了这两个好处,SeaJS 对低版本 IE 的支持更好,也形成了社区。因此这个项目从 kslite 转到了 SeaJS。
但之前使用 kslite 时的一些经验,异步模块加载、代码打包部署等,则沿袭了下来。这些经验,都汇集在此,成为文摘, 它们可能跟 http://seajs.org 上的方式有所不同,甚至迥异,但它们也都是可行的。