KsLite是10年开发的一个短小精悍的模块加载器,特别适合在广告投放、广告创意等第三方应用中使用。它的种子文件本身支持异步加载,并可以被多次加载。而其本身已具有现代模块加载器必备的异步的多层依赖处理机制和较完善的包管理及打包机制。
包和模块管理:模块名由包名,路径,文件名。三部分构成如{packagename}-{path_0}-...-{path_n}-{filename}包类似*.jar,每个包对应一个codebase即classesroot。在S.config.lt_pkgs中配置是一个http地址,如果没有则以为kslite所在地址为base。比如:
S.Config.lt_pkgs={ inf:"https://a.alimama.cn/kslite/", test:"https://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.jsKSLITE.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);});
评论