2015-09-01 55 views
2

經過多天令人沮喪的jsDoc實驗,似乎require-js模塊(AMD)的文檔存在其問題。首先:如何使用jsdoc記錄require-js AMD模塊?

你不能標記您的模塊類:

define([ 
    "dcl/dcl", 
], function (dcl) { 
    /** 
    * @class BaseClass 
    * See {@tutorial getting-started} 
    */ 
    var BaseClass = dcl(null,{ 
     foo:function(a){} 
    }); 

    return BaseClass; 
}); 

jsDoc不會輸出富了!只有將其更改爲

/** @module BaseClass */ 
define([ 
    "dcl/dcl", 
], function (dcl) { 
    /** 
    * @class module:BaseClass 
    */ 
    var BaseClass = dcl(null,{ 
     foo:function(a){} 
    }); 

    return BaseClass; 
}); 

將在文檔中枚舉foo作爲函數。至少有一些事情,但在模塊方面似乎並沒有結束。在查看jsdoc文檔(非常差)時,它會將模塊視爲不同;

/** @module BaseClass */ 
define([ 
    "dcl/dcl", 
], function (dcl) { 
    /** 
    * @class module:BaseClass 
    */ 
    var BaseClass = dcl(null,{ 

     /** 
     * 
     * @constant {String} module:BaseClass.COLLAPSED 
     * @static 
     * @member 
     * @name module:BaseClass.COLLAPSED 
     * */ 
     COLLAPSED : '__wcDockerCollapsedPanel', 

     /** 
     * Add a new docked panel to the docker instance.<br> 
     * <b>Note:</b> It is best to use {@link wcDocker.COLLAPSED} after you have added your other docked panels, as it may ensure proper placement. 
     * @param {module:BaseClass.COLLAPSED} [targetPanel] - A target panel to dock relative to, or use {@link wcDocker.BaseClass} to collapse it to the side or bottom. 
     * @returns {wcPanel|Boolean} - The newly created panel object, or false if no panel was created. 
     */ 
     addPanel: function (targetPaneloptions) {} 
    }); 

    return BaseClass; 
}); 

只有通過增加處處模塊:前綴,你的常量和枚舉類型成爲鏈接能夠特別是當它(鏈接能)來常量和枚舉。這在文檔中看起來很糟糕。此外,我似乎無法在另一個模塊中定義常量和枚舉並鏈接到它們,memberOf也無濟於事。

所以問題是:如何在AMD/Require-JS模塊中使用jsDoc,或者如何讓jsDoc將AMD模塊(由var module =創建)作爲類來處理?

ps:它有可能是它的只是越野車或沒有真正的工作?因爲我真的嘗試了各種各樣的標籤和組合,但沒有......沒有真正的工作,如文檔中所述。無論如何,任何想法或示例的鏈接都是受歡迎的。 摹

回答

0

我掙扎與此相同的問題,最後在@lends

來抓你的例子,我認爲你必須改變是

var BaseClass = dcl(null,{ 

var BaseClass = dcl(null, /** @lends BaseClass.prototype */{ 

沒有包括.prototype將導致jsdoc將對象文字成員定義爲static。我發現你已經明確地將COLLAPSED定義爲static,但不是你的方法,所以我不清楚你需要什麼,或者如果dcl自動檢測常量和函數。