2014-10-07 53 views
0

如何記錄下面的代碼片段?當我離開它,因爲它是Foo.bar沒有說明。當我添加@memberof標記時,它將記錄爲靜態屬性。添加@instance標籤不會改變任何內容。這是相當簡單和常見的代碼模式,所以它應該很容易記錄,對嗎? 我討厭jsdoc ...如何在自調用函數中記錄簡單的類?

/** 
* @namespace 
*/ 
var ns; 

(function (ns) { 
    'use strict'; 

    /** 
    * Constructs class 
    * @class ns.Foo 
    */ 
    function Foo() { 
    } 

    /** 
    * Blabla 
    */ 
    Foo.prototype.bar = function() { 

    }; 

    ns.Foo = Foo; 

})(ns || (ns = {})); 

回答

2

使用@lends告訴jsdoc你在函數中擁有的屬於你的名字空間。通過這種方式,您無需在任何地方用@memberof胡言亂語。以下作品當我在這裏運行時:

/** 
* @namespace 
*/ 
var ns; 

(/** @lends ns */ function (ns) { 
    'use strict'; 

    /** 
    * Constructs class 
    * @class 
    */ 
    function Foo() { 
    } 

    /** 
    * Blabla 
    */ 
    Foo.prototype.bar = function() { 

    }; 

    ns.Foo = Foo; 

})(ns || (ns = {})); 
+0

現在,它的工作。我早一定錯過了一些東西。然而,在生成文檔的@JayKuri解決方案中,類名爲ns.Foo,而在你的 - ns〜Foo中。我不確定有什麼區別。 – jesper 2014-10-07 17:43:09

+1

我忘了這個細節。在'ns.Foo'中,符號'Foo'被理解爲靜態成員,而在'ns〜Foo'中則是一個內部成員。 (文檔是[here](http://usejsdoc.org/about-namepaths.html))。我會說'ns.Foo'更好。但是,沒有辦法讓'@ lends'來產生這個名字。 (我試了。)這個問題已經被報道,所以我希望新版本能夠升級'@ lends'來正確處理它。我寧願忍受不正確的表示法,並相信當問題得到解決時,升級將是無痛的,而不必在我龐大的代碼庫中編寫'@ memberof'。 – Louis 2014-10-07 17:57:21

+0

你能分享一個你提到的問題的鏈接嗎?我找不到它。 – jesper 2014-10-07 18:12:35

1

我認爲你需要做的就是添加@function和@memberof除了@instance什麼。這告訴jsdoc它是什麼,它適合在哪裏:

/** 
* Blabla 
* @function bar 
* @memberof ns.Foo 
* @instance 
*/ 
Foo.prototype.bar = function() { 

}; 

我發現jsdoc鈍......以及掛在那裏。 :-)

+0

謝謝,它的作品,雖然對我來說它是FUBAR。在我所有的項目中,猜測正確的jsdoc標籤需要比應該多的時間。此外,jsdoc片段應該帶有文檔,但現在它擁有大量無意義的標籤。正如我傷心:我討厭它 - 有沒有更好的方法來記錄JS文檔? – jesper 2014-10-07 16:20:08

+0

不確定。我發現NaturalDocs(http://www.naturaldocs.org)更具可預測性,但它的表現有點侷限,我不認爲它正在積極維護。 jsduck(https://github.com/senchalabs/jsduck)看起來很有趣,但我沒有真正玩過它。我的問題是,我已經玩過很多次的javascript模塊,創建一個專門用於javascript的模塊,並且更好地解決問題......但是,我還有其他工作要做。如果你發現你更喜歡的東西,請告訴我。 – JayKuri 2014-10-07 16:29:59

相關問題