我在为一组分组模块编写文档时遇到了一些麻烦。我认为这部分是对什么@class
和代表@module
的误解。@namespace
(或者这可能是雅虎试图将“经典”语言词汇硬塞进 JS 的结果。)
我在下面有一个粗略的示例,显示了我的大部分代码是如何编写的,以及我尝试以 YUIDoc 样式记录它。前两部分 (Foo
和BazManager
) 非常简单。大部头书:
Foo
是一个@class
;Baz
是一个@class
;BazManager
是一个@module
(或者可能是一个@class
只包含@static
成员的);Qux
也是一个@module
但只包含方法。
我的问题是:
- 如果
BazManager
是 a@module
,则Foo
显示在BazManager
; - 如果
BazManager
是 a@class
,如果你不添加所有内容,里面的方法Baz
就会被吸入其中@for
; - 如果
BazManager
是 a@class
,那么记录Baz
的可见性就变得非常棘手; - 我真的不知道我应该如何记录
Qux
。在我看来它是一个模块,但由于它没有@class
es,它会吞噬它周围的所有东西,包括BazManager
. 所以它必须是一个@class
.
谁能建议我应该怎么做?只要文档中的所有内容都正确生成,我真的不在乎我是否正确地使用了这些条款。
这是我的示例代码:
// File: Widgets.js
/**
MyNamespace namespace
@namespace MyNamespace
*/
var MyNamespace = window.MyNamespace || {};
//--------------------PART 1: Foo-------------------//
/**
This is a description of Foo.
@class Foo
*/
MyNamespace.Foo = function () {
this.toString = function () {
return "I am a foo";
};
/**
This is Foo's private method description.
@method privateMethod
@private
*/
var privateMethod = function () {};
/**
This is Foo's public method description.
@method publicMethod
*/
this.publicMethod = function () {};
};
//--------------------PART 2: Baz-------------------//
/**
This is a description of BazManager.
@module BazManager
@namespace MyNamespace
*/
MyNamespace.BazManager = (function () {
var self = {};
/**
This is a description of Baz.
@class Baz
*/
var Baz = function (type) {
/**
toString description
@method toString
@returns {String}
*/
this.toString = function () {
return "I am a baz and I'm " + type;
};
};
/**
This is BazManager's privateBaz description.
@method privateBaz
@private
*/
var privateBaz = new Baz("private");
/**
This is BazManager's publicBaz description.
@method publicBaz
*/
self.publicBaz = new Baz("public");
return self;
} ());
//--------------------PART 3: Qux-------------------//
MyNamespace.Qux = (function () {
var self = {};
/**
execute description
@method execute
@private
*/
var execute = function () {
console.log("Qux is done");
};
/**
start description
@method start
*/
self.start = function () {
setTimeout(execute, 1000);
};
return self;
} ());