代码改变世界

kmdjs指令大全

2014-09-22 10:31  【当耐特】  阅读(1458)  评论(2编辑  收藏  举报

调试

通过下面方式,可以输出kmdjs声称的类:

<script src="../dist/kmd.js?debug" data-main="js/main"></script>

在kmd.js后面加上?debug可以在console面板查看到依赖关系和输出的class。

依赖可视化

通过下面方式,可以输出使用canvas绘制的项目依赖关系图:

<script src="../dist/kmd.js" data-main="js/main?view"></script>

依赖关系,甚至是循环依赖在图中都能体现出来。

合并js

通过下面方式,可以把js合并,该js文件可直接代替kmdjs,让项目正常跑起来:

<script src="../dist/kmd.js" data-main="js/main?combine"></script>

kmdjs.config中的namespace会被编译成如下的js代码:

cfgtns

分离js

通过下面方式,可以把js分离到每个文件中,并自动下载:

<script src="../dist/kmd.js" data-main="js/main?split"></script>

压缩打包

通过下面方式,可以把js分离到每个文件中,并自动下载:

<script src="../dist/kmd.js" data-main="js/main?build"></script>

这样的话,js文件会经过uglify2压缩打包下载。

模块抽取

很多时候,一个kmd项目需要使用另外一个kmd项目中的某些模块,这样的话需要抽取其中的模块。

kmdjs.config({
    name: "HelloKanvas",
    baseUrl: "js",
    classes: [
          { name: "Kanvas.DisplayObject" },
          { name: "Kanvas.Bitmap" },
          { name: "Kanvas.Txt" },
          { name: "Kanvas.Stage" },
          { name: "Kanvas.Container" },
          { name: "Kanvas.Matrix2D" },
          { name: "Kanvas.Shape.Circle" },
          { name: "Kanvas.Sprite" },
          { name: "Kanvas.Loader" },
          { name: "Kanvas.RAF" },
          { name: "Kanvas.UID" },
          { name: "Kanvas.UI.Button" },
          { name: "Kanvas.UI.ShapeButton" },
          { name: "Kanvas.TWEEN" },
          { name: "Kanvas.Shape" }
    ],
    build: [
           "Kanvas.DisplayObject",
           "Kanvas.Bitmap"
    ]
});

如上面的的代码,会自动以kmdjs.exec(...)的形式build出DisplayObject和Bitmap以及他们依赖的模块。

抽取模块的使用

这里假定抽取出来的模块名字叫做Kanvas.js,再另外的kmd项目中的kmdjs.config如下配置:

kmdjs.config({
    name: "KanvasGame",
    baseUrl: "js",
    deps: [
        {
            url: "Kanvas.js",
            classes: [
                  { name: "Kanvas.DisplayObject" },
                  { name: "Kanvas.Bitmap" }
            ]
        }
    ],
    classes: [
         { name: "KanvasGame.Util" },
         { name: "KanvasGame.MainPanel" },
         { name: "KanvasGame.Game" }
    ]
});

不管是合并、打包压缩、分离等,最后kmdjs都会拉平所有依赖,补全所有namespace,所以kmdjs是支持循环依赖,并且告诉人们,世界上根本没有循环依赖那回事儿。

kmdjs项目地址:https://github.com/kmdjs/kmdjs

待续...