KSLITE模块管理程序
KsLite 是 10 年开发的一个短小精悍的模块加载器,特别适合在广告投放、广告创意等第三方应用中使用。它的种子文件本身支持异步加载,并可以被多次加载。而其本身已具有现代模块加载器必备的异步的多层依赖处理机制和较完善的包管理及打包机制。
包和模块管理:
模块名由包名,路径,文件名。三部分构成 如 {packagename}-{path_0}-...-{path_n}-{filename}
包类似 *.jar,每个包对应一个 codebase 即 classesroot。在 S.config.lt_pkgs
中配置 是一个 http 地址,如果没有则以为 kslite 所在地址为 base。 比如:
S.Config.lt_pkgs={ inf:"http://a.alimama.cn/kslite/", test:"http://demo.taobao.com/tbad/kslite"}
模块 inf-a
对应地址 http://a.alimama.cn/kslite/inf/a.js 模块 test-t-1
对应地址 http://demo.taobao.com/tbad/kslite/test/t/1.js
这样根据模块名称即可定位模块地址,所以不需要 add 预先注册模块即可直接 use。 add 不执行 attach。只有第一次 use 的时候才执行 attach。 add 同样支持 require。可以在载入 js 后根据 require 串行加载更多模块。已处理循环引用问题,办法很土。 暂时不支持 use 外部 JS 文件,如 use("jquery.js")
;
一些说明
文件使用utf-8编码, 在合并到别的工程的时候手工编码转换
使用方法
约定禁止不加模块id, 不允许使用下面的形式
// 文件及路径, test包下的math模块, 以下类似 //test/math.js KSLITE.declare([], function(require, exports){ exports.add = function(a, b){ return a + b; }; });
下面是正确的写法
// 文件及路径, test包下的math模块, 以下类似 //test/math.js KSLITE.declare('test-math', function(require, exports){ exports.add = function(a, b){ return a + b; }; }); // test/program.js KSLITE.declare('test-program', ["test-increment"], function(require, exports){ var inc = require("test-increment").increment; exports.result = inc(1); }); // 调用 KSLITE.provide(["test-program"], function(require){ alert(require("test-program").result); });
评论