Javascript JSDoc3不生成指向NodeJS中名称空间的超链接
我敢打赌这是一个愚蠢的问题,但从今天早上开始,我在我找到的任何文件中都找不到原因 我在使用JavaDoc方面很有经验,但不知何故,即使Javascript JSDoc3不生成指向NodeJS中名称空间的超链接,javascript,node.js,jsdoc3,Javascript,Node.js,Jsdoc3,我敢打赌这是一个愚蠢的问题,但从今天早上开始,我在我找到的任何文件中都找不到原因 我在使用JavaDoc方面很有经验,但不知何故,即使@link的语法相同,JSDoc3也不会生成相关元素的HREF。我已经尝试了所有可能的名称空间链接方法(显然也是错误的),但是没有一种方法会稍微改变结果。我希望通过编写{@link#myFunction}或至少{@link MyClass#myFunction}来接收链接,但这两者都没有创建超链接。以下是我测试过的代码: /** * See {@link myO
@link
的语法相同,JSDoc3也不会生成相关元素的HREF。我已经尝试了所有可能的名称空间链接方法(显然也是错误的),但是没有一种方法会稍微改变结果。我希望通过编写{@link#myFunction}
或至少{@link MyClass#myFunction}
来接收链接,但这两者都没有创建超链接。以下是我测试过的代码:
/**
* See {@link myOtherFunction} and [MyClass's foo property]{@link MyClass#foo}.
* Or look at {@link https://github.com GitHub}
*/
function myFunction(){};
/**
* See {@link #myFunction} or maybe {@link #myFunction()}
*/
function myOtherFunction() {};
我使用/node\u modules/.bin/jsdoc./*--configure./conf.json
生成它,我的默认配置文件是:
{
"tags": {
"allowUnknownTags": true
},
"source": {
"includePattern": ".+\\.js(doc|x)?$",
"excludePattern": "(^|\\/|\\\\)_"
},
"plugins": [],
"templates": {
"cleverLinks": true,
"monospaceLinks": false,
"default": {
"outputSourceFiles": true
}
}
}
(如果我写“cleverLinks”:false,
,这没有什么区别)
我的输出是这样的:
因此可以看出,URL是正确生成的,但名称空间不是
我非常困惑,因为我找不到一个描述,说明必须做些什么才能为我的名称空间生成HREF。另外,jsdoc说:
{}内联标记创建指向指定的namepath或URL的链接。使用{}标记时,还可以使用几种不同格式之一提供链接文本。如果不提供任何链接文本,JSDoc将使用namepath或URL作为链接文本
听起来不需要做任何事情来生成指向namepath的链接
它还将语法定义为:
{@linknamephorurl}[链接文本]{@link namephorurl}
{@link namephorurl | link text}
{@link namephorurl链接文本(在第一个空格之后)} 我的名字路径也可以,因为webstorm可以直接解析它们
我到底错过了什么 致以最良好的祝愿,
Vegaaaa我发现我的问题与将JSDoc与CommonJS(NodeJS)一起使用有关。经过几个小时的谷歌搜索和反复试验,我终于了解了它在NodeJS中的工作方式。我可能会玩弄
@internal
和@instance
,但这解决了为什么JSDoc不想为我的NodeJS代码生成链接的问题
这是因为CommonJS的作用域与客户端JS的工作方式不同,这在NodeJS模块的定义中有一个原因。因此,我们需要告诉JSDoc如何通过为模块添加@module
标记来解析变量,并通过解析其关系(如{@link module:module_NAME~instanceName}
来引用模块的成员
下面是一个相应生成html的示例。希望这能帮助像我一样遇到同样问题的人
致以最良好的祝愿 织女星
/**
* @module lib
*/
/**
* @constructor
*/
var SomeClass = function () {
};
/**
* Some doc...
*/
var moduleFunction = function () {
/**
* @type {number}
*/
var innerVar = 0;
/**
* @type {number}
*/
this.instanceVar = 0;
/**
* @memberOf module:lib~moduleFunction
*/
function staticVar() {
console.log(0)
}
}
/**
* Link to this module (identified by @module lib in the beginning): {@link module:lib} <br/>
* Link to my constructor: {@link module:lib~SomeClass} <br/>
* Link to a module function: {@link module:lib~moduleFunction} <br/>
* Link to an instance variable of a module function: {@link module:lib~moduleFunction#instanceVar} <br/>
* Link to a inner variable within a module function: {@link module:lib~moduleFunction~innerVar} <br/>
* Link to a static variable within a module function: {@link module:lib~moduleFunction.staticVar} <br/>
*/
function documentedFunction(){}
/**
*@模块库
*/
/**
*@constructor
*/
var SomeClass=函数(){
};
/**
*一些医生。。。
*/
var moduleFunction=函数(){
/**
*@type{number}
*/
var=0;
/**
*@type{number}
*/
this.instanceVar=0;
/**
*@memberOf模块:lib~moduleFunction
*/
函数staticVar(){
console.log(0)
}
}
/**
*链接到此模块(开头由@module lib标识):{@Link module:lib}
*链接到我的构造函数:{@Link module:lib~SomeClass}
*链接到模块函数:{@Link module:lib~moduleFunction}
*链接到模块函数的实例变量:{@Link module:lib~moduleFunction#instanceVar}
*链接到模块函数内的内部变量:{@Link module:lib~moduleFunction~innerVar}
*链接到模块函数内的静态变量:{@Link module:lib~moduleFunction.staticVar}
*/
函数documentedFunction(){}
我发现我的问题与将JSDoc与CommonJS(NodeJS)一起使用有关。经过几个小时的谷歌搜索和反复试验,我终于了解了它在NodeJS中的工作方式。我可能会玩弄
@internal
和@instance
,但这解决了为什么JSDoc不想为我的NodeJS代码生成链接的问题
这是因为CommonJS的作用域与客户端JS的工作方式不同,这在NodeJS模块的定义中有一个原因。因此,我们需要告诉JSDoc如何通过为模块添加@module
标记来解析变量,并通过解析其关系(如{@link module:module_NAME~instanceName}
来引用模块的成员
下面是一个相应生成html的示例。希望这能帮助像我一样遇到同样问题的人
致以最良好的祝愿 织女星
/**
* @module lib
*/
/**
* @constructor
*/
var SomeClass = function () {
};
/**
* Some doc...
*/
var moduleFunction = function () {
/**
* @type {number}
*/
var innerVar = 0;
/**
* @type {number}
*/
this.instanceVar = 0;
/**
* @memberOf module:lib~moduleFunction
*/
function staticVar() {
console.log(0)
}
}
/**
* Link to this module (identified by @module lib in the beginning): {@link module:lib} <br/>
* Link to my constructor: {@link module:lib~SomeClass} <br/>
* Link to a module function: {@link module:lib~moduleFunction} <br/>
* Link to an instance variable of a module function: {@link module:lib~moduleFunction#instanceVar} <br/>
* Link to a inner variable within a module function: {@link module:lib~moduleFunction~innerVar} <br/>
* Link to a static variable within a module function: {@link module:lib~moduleFunction.staticVar} <br/>
*/
function documentedFunction(){}
/**
*@模块库
*/
/**
*@constructor
*/
var SomeClass=函数(){
};
/**
*一些医生。。。
*/
var moduleFunction=函数(){
/**
*@type{number}
*/
var=0;
/**
*@type{number}
*/
this.instanceVar=0;
/**
*@memberOf模块:lib~moduleFunction
*/
函数staticVar(){
console.log(0)
}
}
/**
*链接到此模块(开头由@module lib标识):{@Link module:lib}
*链接到我的构造函数:{@Link module:lib~SomeClass}
*链接到模块函数:{@Link module:lib~moduleFunction}
*链接到模块函数的实例变量:{@Link module:lib~moduleFunction#instanceVar}
*链接到模块函数内的内部变量:{@Link module:lib~moduleFunction~innerVar}
*链接到模块函数内的静态变量:{@Link module:lib~moduleFunction.staticVar}
*/
函数documentedFunction(){}