ここにある答えに感謝します:
https://stackoverflow.com/a/19336366/592495
私の JavaScript ドキュメントはよく整理され、適切にフォーマットされています。各名前空間は、含まれるメソッドの「親」です。ただし、ナビゲーションは私が望むほど細かくはありません。
簡単なコマンド ( ) で node.js ツールを使用してコンパイル/レンダリングした後jsdoc file1.js file2.js
、ドキュメントはデフォルトのテンプレートに生成されます。このデフォルト テンプレートでは、サイドバー ナビゲーションに自分の名前空間が表示されますが、それぞれに含まれるメソッドは表示されません。
@class
各メソッドにディレクティブを追加することで、メソッドのリストを偽装できますが、ご存知のように、それらは実際にはクラスではありません。
次のようなサイドバー ナビゲーションが見たいです。
My Project
- namespace 1
- method.a
- method.b
- method.c
-namespace 2
- method.d
- method.e
私が見落としたドキュメンテーションへの指示は、非常に高く評価されます。
[編集して追加:]
実験で@class
は、私が望むことをほぼ正確に行いますが、いくつかの例外があります:
名前空間の上にクラスをリストします。名前空間はいわば「親」であるため、私はそれが好きではありません。
JavaScript にはその意味でのクラスはありません。その命名法で「クラス」と呼ばれるものではありません。ドキュメントを読んで「クラス」のリストを表示すると、奇妙な切断が発生します。
「新しい」演算子が自動的に追加されます。すべてのメソッドがコンストラクターを持っているわけではありません...問題を確認できます!
[編集: サンプルコード]
というわけで現在の構造です。JSDoc コメントで注釈を付ける前に、基本的なアプローチを次に示します。
var app = app || {};
app.utils = {
whizbang: function() {},
geegolly: function() {}
};
app.render = {
thestuff: function(params) {},
thethings: function(params) {}
}
}
したがって、オブジェクト リテラル表記を使用すると、トップ レベルはアプリケーション全体の「名前空間」ですが、その中にはさまざまな目的のサブ名前空間があります。ここには、ユーティリティに固有のサブ名前空間と、レンダリングに固有のサブ名前空間があります。それぞれがプロパティを持つことができますが、さらに重要なことは、それぞれに関数が含まれていることです。サイドバーに表示されるのはこれらの機能です。次に、JSDoc の現在のパターンで具体化します。
/**
* @file MyApp.js This is an awesome description of MyApp.js
*
* @version 0.1
* @author Greg Pettit
* @copyright 2015
*
*/
/**
* Description of my main namespace!
*
* @namespace app
*/
var app = app || {};
/**
* This is a description of my sweet utilities namespace!
*
* @memberof app
* @type {object}
* @namespace app.utils
*/
app.utils = {
/**
* app.utils.whizbang is an awesome function with magical powers. I sure wish
* it would appear in the sidebar as a member of app.utils!
*
* @memberof app.utils
* @method whizbang
*
* @param {method} [successCallback] Method invoked on successful attempt.
* @param {method} [errorCallback] Method invoked on unsuccessful attempt.
*
*/
whizbang: function(successCallback, errorCallback) { // do utility stuff! }
}
/**
* This is a description of the best rendering namespace ever.
*
* @memberof app
* @type {object}
* @namespace app.render
*/
app.render = {
/**
* app.render.thethings renders the things! I wish it would render to the sidebar...
*
* @memberof app.render
* @method thethings
*
* @param {method} node The node to which thethings are rendered
*
*/
thethings: function(node) { // do rendering stuff! }
}