kmdjs api reference
2014-09-21 09:23 【當(dāng)耐特】 閱讀(1455) 評(píng)論(2) 收藏 舉報(bào)總覽
kmdjs的主要就兩個(gè)API:kmdjs.config和define
kmdjs.config
kmdjs.config是用于項(xiàng)目整體配置,一般的配置如下所示:
kmdjs.config({
name:"HelloKMD",
baseUrl: "js",
classes: [
{ name: "HelloKMD.Ball" },
{ name: "Util.Bom",url:"Util" }
]
});
其中:
name:項(xiàng)目的名稱
baseUrl:基礎(chǔ)的路徑
classes: 項(xiàng)目中定義的所有的類,其中的name是命名空間+類名,url是該類對(duì)應(yīng)的目錄
項(xiàng)目目錄結(jié)構(gòu)如圖所示:

define
define可以傳入兩個(gè)參數(shù),如:
define("namespace.class",{
})
也聲明依賴,傳入三個(gè)參數(shù),如:
define("namespace0.class1",["namespace1,namespace2"],{
})
這里需要注意兩點(diǎn):
- 依賴項(xiàng)列表是namespace,非class/module
- 如果要使用namespace0下的class2無需在依賴列表中加入namespace0,因?yàn)閏lass1本身就屬于namespace0,namespace0下的任何class都可以隨意使用
這里可能有童鞋會(huì)擔(dān)心,kmdjs是否會(huì)預(yù)先加載namespace0所有的class。這點(diǎn)大可放心,kmdjs會(huì)使用uglify2去分析依賴,加載里面用到的class。
對(duì)應(yīng)上面的kmdjs.config,相關(guān)js文件一定存在如下的class定義:
define("HelloKMD.Ball", {
})
define("Util.Bom", {
})
這里需要注意一點(diǎn):
- 如果不顯示聲明namespace,如下面代碼所示:
define("Ball", {
})
那么它就默認(rèn)處于:kmdjs.config中的name的命名空間下,即:HelloKMD.Ball
define高級(jí)之繼承
父類:
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是構(gòu)造函數(shù),this._super訪問父類的方法。在其他js里直接new就能創(chuàng)建對(duì)象實(shí)例。如,在Main中使用:
define("Main", {
ctor: function () {
var pig=new Pig(16,"巴西豬");
}
})
當(dāng)然,如果需要擴(kuò)展一個(gè)類的靜態(tài)方法或者屬性,可以通過下面這種方式:
define("Base.Http", {
statics: {
version:"1.0.0",
ajax:function(option){
...
},
jsonp:function(){
...
}
}
})
在其他js里直接new就能創(chuàng)建對(duì)象實(shí)例。如,在Main中使用:
define("Main",["Base"], {
ctor: function () {
Http.ajax({
...
})
}
})
kmdjs.config高級(jí)之跨項(xiàng)目跨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,且聽下回分解..
詳細(xì)代碼見:https://github.com/kmdjs/kmdjs
浙公網(wǎng)安備 33010602011771號(hào)