在 JSDoc 中,doclet 的正确定义是什么?
In JSDoc, what is the correct definition of doclet?
//Example 1
/**
* This is a function that return a message
* @param {String} msg The message that gonna be returned
* @returns {String} The message
*/
function myFunction(msg) {
return msg
}
//Example 2
/**
* This is a function that return a message
* @function myFunction
* @param {String} msg The message that gonna be returned
* @returns {String} The message
*/
就拿上面的例子来说,大家能告诉我JSDoc中到底哪个是doclet吗? “依赖”函数显示在文档上的注释(示例 1)或显示在文档上但不“依赖”任何东西的注释(因为我给它起了自己的名字 myFunction
)?
doclet 是暴露给插件和模板的 JSDoc 实体。大多数人改为处理 JSDoc 注释,例如
so.js
/**
* This is a JSDoc comment
*/
正在转储 doclet:
# npx jsdoc -X so.js
[
{
"kind": "package",
"longname": "package:undefined",
"files": [
"/workspace/dev/tmp/so.js"
]
}
]
另一个例子:
/**
* @return {boolean}
*/
function foo() {
return true;
}
文档:
# npx jsdoc -X so.js
[
{
"comment": "/**\n * @return {boolean}\n */",
"meta": {
"range": [
29,
62
],
"filename": "so.js",
"lineno": 4,
"columnno": 0,
"path": "/workspace/dev/tmp",
"code": {
"id": "astnode100000002",
"name": "foo",
"type": "FunctionDeclaration",
"paramnames": []
}
},
"returns": [
{
"type": {
"names": [
"boolean"
]
}
}
],
"name": "foo",
"longname": "foo",
"kind": "function",
"scope": "global",
"params": []
},
{
"kind": "package",
"longname": "package:undefined",
"files": [
"/workspace/dev/tmp/so.js"
]
}
]
如您所见,JSDoc 不需要您说 foo
是一个函数。可以从源代码中推断出很多信息,这些信息在 doclet 中捕获。
JSDoc 文档中有几个地方提到了“虚拟 JSDoc 注释”。这些是独立的 JSDoc 块,即没有紧接着 JS 代码。事实上,您可以生成一个完整的 API 文档,其中只有虚拟 JSDoc 注释,根本没有实际代码。
//Example 1
/**
* This is a function that return a message
* @param {String} msg The message that gonna be returned
* @returns {String} The message
*/
function myFunction(msg) {
return msg
}
//Example 2
/**
* This is a function that return a message
* @function myFunction
* @param {String} msg The message that gonna be returned
* @returns {String} The message
*/
就拿上面的例子来说,大家能告诉我JSDoc中到底哪个是doclet吗? “依赖”函数显示在文档上的注释(示例 1)或显示在文档上但不“依赖”任何东西的注释(因为我给它起了自己的名字 myFunction
)?
doclet 是暴露给插件和模板的 JSDoc 实体。大多数人改为处理 JSDoc 注释,例如
so.js
/**
* This is a JSDoc comment
*/
正在转储 doclet:
# npx jsdoc -X so.js
[
{
"kind": "package",
"longname": "package:undefined",
"files": [
"/workspace/dev/tmp/so.js"
]
}
]
另一个例子:
/**
* @return {boolean}
*/
function foo() {
return true;
}
文档:
# npx jsdoc -X so.js
[
{
"comment": "/**\n * @return {boolean}\n */",
"meta": {
"range": [
29,
62
],
"filename": "so.js",
"lineno": 4,
"columnno": 0,
"path": "/workspace/dev/tmp",
"code": {
"id": "astnode100000002",
"name": "foo",
"type": "FunctionDeclaration",
"paramnames": []
}
},
"returns": [
{
"type": {
"names": [
"boolean"
]
}
}
],
"name": "foo",
"longname": "foo",
"kind": "function",
"scope": "global",
"params": []
},
{
"kind": "package",
"longname": "package:undefined",
"files": [
"/workspace/dev/tmp/so.js"
]
}
]
如您所见,JSDoc 不需要您说 foo
是一个函数。可以从源代码中推断出很多信息,这些信息在 doclet 中捕获。
JSDoc 文档中有几个地方提到了“虚拟 JSDoc 注释”。这些是独立的 JSDoc 块,即没有紧接着 JS 代码。事实上,您可以生成一个完整的 API 文档,其中只有虚拟 JSDoc 注释,根本没有实际代码。