代码改变世界

AMD and CMD are dead之KMD.js版本0.0.2发布

2014-06-28 18:55  【当耐特】  阅读(1474)  评论(5编辑  收藏  举报

更新

正式从UglifyJS切换至UglifyJS2

增加依赖可视化功能

image

压缩代码更加方便

image

统一风格:如main的class名也不能省略

image

优化了kmdjs管道

修复了无数bug

通过src开启debug模式

2014-06-29_155911

代码格式强制分号结束,不然报错

问题

1.从UglifyJS切换至UglifyJS2,主要是UglifyJS2把AST更加严格规范化,而且提供了方便的ast.walk遍历js代码的语法树,把任何代码分析得无比透彻,比巨复杂无比的正则表达式稳定靠谱多了,通过UglifyJS,使开发者能把js代码随意组装优化压缩美化,使得使用者有着无限的发挥空间。

2.UglifyJS2不兼容老版本IE,大量使用了新的方法,所以这里浪费了一点时间去修正prototype上的方法。诸如:JSON、Array、String等。

3.使用过kmdjs的开发者都知道,kmdjs没有require关键字。在诸如cmd和amd中,main.js必须使用require关键字。而这非常违背常规思维,因为main.js也是工程中的代码,既然是工程中的代码,那它一定也要处于某个模块下,也就是某一命名空间下,而kmdjs则是这么干的。main.js里面除了多了kmdjs.config,其余代码和其他js一样,都是使用define开头,都必须申明一个名字。

4.关于给main.js强制加入一个config,这个是非常不人道,以为main.js只是一个入口。kmdjs.config不属于其职责范畴。但是这个是被逼无奈的结果。在最早的kmdjs版本中,config使用单独的js存放,在载入kmdjs的同时,会通过xmlHttpRequest去发起AJAX请求加载config,config存了项目名称以及baseUrl和命名空间、路径和class的关系。未来config还会负责配置那种js lazy load。但是这种设计导致的一个重大隐患就是,浏览kmdjs项目必须起一web服务器,使用文件系统打开则会报错。所以果断去掉了,直接把config存在main.js最上部。

KMD.js VNEXT

下一个版本的kmdjs,也就是v0.0.3,将加入一重大且实用的lazy load。敬请期待……

地址

https://github.com/kmdjs

AMD和CMD已死。我不是认真,我只是为了看到AMD和CMD躺在血泊里。