27

ここにある答えに感謝します:

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! }
}
4

1 に答える 1