AMD and CMD are dead之KMD規范


What’s KMD?

亂世出英雄,KMD名字的由來充滿了殺氣。

Kill AMD and CMD

KMD為替代混亂的AMD和CMD世界而生,一統天下。或者讓這個混亂的世界更加混亂,導致:

KMD AMD CMD三分天下

KMD的目標從來都是遠大的:

JS工程化終極解決方案

使用KMDjs的工程師從來都是:

image

尼瑪,什么東西,這么NB?

KMD規范

0.KMD只暴露兩個關鍵字,一個是define用來定義模塊和加載模塊,一個是kmdjs,用來使用kmdjs.config

1.通過define定義命名空間和類

define("MyApp.User", {
    init: function (name,age) {
        this.name = name;
        this.age = age;
    },
    say: function () {
        alert("my name is " + this.name);
    }
})

其中MyApp是命名空間,User是類

2.不允許只定義類,不定義命名空間,如:下面的做法是錯誤的:

define("User", {
    init: function (name,age) {
        this.name = name;
        this.age = age;
    },
    say: function () {
        alert("my name is " + this.name);
    }
})

3.通過statics給類定義靜態屬性和方法:

define("NS2.Model.Animate",["NS2"], {
    statics: {
        Version: "1.0",
        CreateGUID: function () {
            return 2;
        }
    },
    init: function (name, age) {
        this.name = name;
        this.age = age;
    }
})

4.通過冒號實現繼承:

define("NS2.Model.User:NS2.Model.Animate", {
    statics: {
        CreateGUID: function () {
            return 3;
        }
    },
    init: function (name, age) {
        this.name = name;
        this.age = age;
    }
})

4.靜態屬性可繼承,可覆蓋,父類的保持不變

5.通過define方法引用命名空間,引用之后,該命名空間下的類全部可以使用

require(["NS", "NS2", "NS2.Model"], function () {
    //這里面可以使用上面三個命名空間下的所有類
})

這里不需要擔心會加載大量Class,KMDjs會拿到function(){}去分析用來哪個命名空間下的哪個類,然后按需加載執行。

6.通過_super訪問父類方法:

define("NS2.Model.User:NS2.Model.Animate", {
    init: function (name, age) {
        this._super(name, age);
        this.sex = "男";
    }
})

8.js文件名和類名一致

 
        

9.類名和命名空間以及文件路徑的關系在kmdjs.config方法配置

KMDjs網址

http://kmdjs.org/ 備案中..

http://kmdjs.github.io/  kmdjs在github官網

http://htmlcssjs.duapp.com/kmdjs/  kmdjs在BAE

kmdjs@QQ.com kmdjs官方郵箱

@當耐特 kmdjs官方微博

總結

AMD and CMD are dead. That's all.

我不是認真,我就是為了輸贏.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM