• kmdjs api reference


    总览

    kmdjs的主要就两个API:kmdjs.config和define

    kmdjs.config

    kmdjs.config是用于项目整体配置,一般的配置如下所示:

    kmdjs.config({
        name:"HelloKMD",
        baseUrl: "js",
        classes: [
            { name: "HelloKMD.Ball" },
            { name: "Util.Bom",url:"Util" }
        ]
    });
    

    其中:

    name:项目的名称

    baseUrl:基础的路径

    classes: 项目中定义的所有的类,其中的name是命名空间+类名,url是该类对应的目录

    项目目录结构如图所示:

    dir

    define

    define可以传入两个参数,如:

    define("namespace.class",{
    
    })
    

    也声明依赖,传入三个参数,如:

    define("namespace0.class1",["namespace1,namespace2"],{
    
    })
    
    这里需要注意两点:
    • 依赖项列表是namespace,非class/module
    • 如果要使用namespace0下的class2无需在依赖列表中加入namespace0,因为class1本身就属于namespace0,namespace0下的任何class都可以随意使用

    这里可能有童鞋会担心,kmdjs是否会预先加载namespace0所有的class。这点大可放心,kmdjs会使用uglify2去分析依赖,加载里面用到的class。

    对应上面的kmdjs.config,相关js文件一定存在如下的class定义:

    define("HelloKMD.Ball", {
    
    })
    
    define("Util.Bom", {
    
    })
    
    这里需要注意一点:
    • 如果不显示声明namespace,如下面代码所示:
    define("Ball", {
    
    })
    

    那么它就默认处于:kmdjs.config中的name的命名空间下,即:HelloKMD.Ball

    define高级之继承

    父类:

    define("Animal", {
        ctor: function (age) {
            this.age = age;
        }
    })
    

    子类:

    define("Pig:Animal", {
        ctor: function (age, name) {
            this._super(age);
            this.name = name;
        },
        climbTree: function () {
            return "猪不能上树";
        }
    })
    

    可以通过ctor是构造函数,this._super访问父类的方法。在其他js里直接new就能创建对象实例。如,在Main中使用:

    define("Main", {
        ctor: function () {
           var pig=new Pig(16,"巴西猪");
        }
    })
    

    当然,如果需要扩展一个类的静态方法或者属性,可以通过下面这种方式:

    define("Base.Http", {
        statics: {
            version:"1.0.0",
            ajax:function(option){
             ...
            },
            jsonp:function(){
             ...
            }       
        }
    })
    

    在其他js里直接new就能创建对象实例。如,在Main中使用:

    define("Main",["Base"], {
        ctor: function () {
           Http.ajax({
             ...
           })
        }
    })
    

    kmdjs.config高级之跨项目跨url依赖

    kmdjs.config({
        name: "HelloKMD",
        baseUrl: "js",
        deps: [
            {
                url: "OtherTopNs.js",
                classes:[
                     { name: "OtherTopNs.Ball" },
                     { name: "OtherTopNs.XXX" }
                 ]
            },
            {
                url: "http://htmlcssjs.duapp.com/Bom.js",
                classes: [
                       { name: "Util.Bom" }
                ]
    
            }
        ],
        classes: [
            { name: "HelloKMD.Animal" },
            { name: "HelloKMD.Pig" },
            { name: "HelloKMD.PigSub" }
        ]
    
    });
    

    这里需要build出OtherTopNs下面的某些class,且听下回分解..

    详细代码见:https://github.com/kmdjs/kmdjs

  • 相关阅读:
    基于HSharp使用C#对象建立并输出HTML
    基于HSharp 使用C#反序列化HTML并获取HTML中的特定内容
    iis最大连接数和队列长度
    强网拟态 2021 showyourflag Writeup
    ByteCTF 2021 bytecert Writeup
    基于 OpenSSL 的 RSA 消息加密及签名实现
    思维导图-2020的目标
    我的第一个博客
    【网络流24题】洛谷P4015 运输问题
    CSP/NOIP 防爆指南
  • 原文地址:https://www.cnblogs.com/iamzhanglei/p/3984186.html
Copyright © 2020-2023  润新知