如何用JSDoc 3为JavaScript字典中的函数生成文档?
解决JSDoc 3无法生成字典中函数文档的问题
首先,问题出在你当前的@function标签没有明确关联到Minitel.actions这个对象成员上——JSDoc默认不会自动识别赋值给对象属性的函数属于该对象的成员,所以需要补充标签来建立归属关系。
下面是两种可行的解决方法,你可以任选其一:
方法一:使用@function标签指定完整路径
直接在@function标签后写出函数的完整命名路径,让JSDoc明确它的归属:
/** * @namespace Minitel */ var Minitel = Minitel || {} /** * @callback actionCallback * @param {Stream} stream 需添加Videotex代码的Minitel流 * @param {Object} data 数据对象 * @param {?number} offsetX X轴偏移量 * @param {?number} offsetY Y轴偏移量 */ /** * 动作回调函数集合 * @type {Object.<string, actionCallback>} */ Minitel.actions = {} /** * 处理"content-string"动作,传入的值需已准备好可发送至流中。 * @function Minitel.actions["content-string"] * @param {Stream} stream 需添加Videotex代码的Minitel流 * @param {Object} data 数据对象 */ Minitel.actions["content-string"] = function(stream, data) { /* ... */ } /** * 处理"content-block"动作,仅支持左对齐、居中对齐和右对齐。 * @function Minitel.actions["content-block"] * @param {Stream} stream 需添加Videotex代码的Minitel流 * @param {Object} data 数据对象 * @param {?number} offsetX X轴偏移量 * @param {?number} offsetY Y轴偏移量 */ Minitel.actions["content-block"] = function(stream, data, offsetX, offsetY) { /* ... */ }
方法二:使用@memberof + @alias标签
这种方式更灵活,适合需要明确归属同时保持注释结构清晰的场景:
/** * @namespace Minitel */ var Minitel = Minitel || {} /** * @callback actionCallback * @param {Stream} stream 需添加Videotex代码的Minitel流 * @param {Object} data 数据对象 * @param {?number} offsetX X轴偏移量 * @param {?number} offsetY Y轴偏移量 */ /** * 动作回调函数集合 * @type {Object.<string, actionCallback>} */ Minitel.actions = {} /** * 处理"content-string"动作,传入的值需已准备好可发送至流中。 * @memberof Minitel.actions * @alias Minitel.actions["content-string"] * @function * @param {Stream} stream 需添加Videotex代码的Minitel流 * @param {Object} data 数据对象 */ Minitel.actions["content-string"] = function(stream, data) { /* ... */ } /** * 处理"content-block"动作,仅支持左对齐、居中对齐和右对齐。 * @memberof Minitel.actions * @alias Minitel.actions["content-block"] * @function * @param {Stream} stream 需添加Videotex代码的Minitel流 * @param {Object} data 数据对象 * @param {?number} offsetX X轴偏移量 * @param {?number} offsetY Y轴偏移量 */ Minitel.actions["content-block"] = function(stream, data, offsetX, offsetY) { /* ... */ }
额外优化建议
你原来的@member {Object.<string, actionCallback>}可以改成@type {Object.<string, actionCallback>},这是更标准的类型标注方式,JSDoc对@type的解析会更准确。
保持你当前的生成命令和jsdoc.json配置不变,修改注释后重新运行jsdoc -p -c jsdoc.json app/*.js library/minitel/*.js,就能在生成的文档中看到Minitel.actions下的两个函数了。
内容的提问来源于stack exchange,提问作者zigazou
相关产品推荐
相关产品推荐

