回顾

上篇文章大概展示了 kmdjs0.1.x 时期的编程范式:
如下面所示,可以直接依赖注入到 function 里,

也可以直接在代码里把 full namespace 加上来调用,如:

而且,在循环依赖的场景,因为执行顺序的问题,会导致第一种方式注入 undefined,所以循环依赖的情况下只能用 full namespace 的方式来调用。

这种编程体验虽然已经足够好,但是可以更好。怎样才算更好?

  1. 不用依赖注入 function
  2. 不用写 full namespace,自动匹配依赖

如下所示:

这就要借助 uglifyjs 能力,把 function 的字符串替换成带有 namespace 就可以实现上面的效果。

uglifyjs 依赖分析和代码重构

通过上面的 fixDeps,可以对代码就行变换。如:

输出:

这样,kmdjs 在执行模块 function 的时候,只需要 fixDeps 加上 full namespace 就行:

build 出来的包,当然全都加上了 namespace。再也不用区分循环依赖和非循环依赖了~~~

Github

上面的所有代码可以 Github 上找到:
https://github.com/kmdjs/kmdjs

原创文章转载请注明:

转载自AlloyTeam:http://www.alloyteam.com/2016/06/kmdjs-integrated-uglifyjs2-to-build-the-ultimate-programming-experience/

  1. WEI 2016 年 7 月 17 日

    最近发现很多 H5 把资源都压在一个文件里面了,能不能给点思路?

发表评论