带有Dojo和AMD的JSDoc3
我正在试图让我的JS文档正确。 我使用的是Dojo,以及其他一些构建于其上的复杂框架,我会省略细节。 关键是这个框架使用AMD模块。 我想让我的JSDoc工作。
这是我到目前为止:
/**
* Creates a button instance that launches a document entry template selector
* @module widgets/instance/AddButton
*/
define([
"dijit/_TemplatedMixin",
"dijit/_WidgetBase",
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/on",
"kwcn/services/request",
"kwcn/widgets/AddContentDialog"
], function (_TemplatedMixin, _WidgetBase, declare, lang, on, request, AddContentDialog) {
return declare('AddButton', [_WidgetBase, _TemplatedMixin], /** @lends module:widgets/instance/AddButton */{
id: 'add-button',
contentList: null,
templateString: '<button class="btn btn-link toolbar-link"><i class="fa fa-lg fa-file"></i> Add Document</button>',
addContentItem: null,
type: null,
/**
* @constructs
* @param args
* @param args.type {string} The type of content item
* @param args.contentList {ContentList} The instance of [ContentList]{@link module:widgets/contentList/ContentList} in scope
*/
constructor: function (args) {
declare.safeMixin(this, args);
},
/**
* @private
*/
postCreate: function () {
console.log("creating the add content button...");
this.addContentItem = new AddContentDialog({
repository: request.repository(),
hasCase: false
});
this.own(on(this.domNode, 'click', lang.hitch(this, 'show')));
},
/**
* @public
*/
show: function () {
request.inboundFolder().then(lang.hitch(this, function (folder) {
this.addContentItem.showAddDocument(null, folder);
}));
}
});
});
结果:
这个结果并不差。 但它推断我的成员是静态的。 WebStorm似乎正确地将它们推断为成员,但jsdoc3生成器不会。 从我阅读的内容来看,我不应该指定@memberof,因为@lends应该关注这一点。 有什么我做错了吗? 任何一般建议,将不胜感激。 我阅读了JSDoc3文档,但是在将AMD添加到方程中时,很多构造看起来都很模糊。
您需要将实例属性借给原型,而不是对象本身: @lends module:widgets/instance/AddButton#
。 请注意最后的#,它是.prototype
的缩写。
另外请注意,jsdoc3在处理非CommonJS模块方面有很多bug,所以你可能需要做一些额外的hacky工作才能正常工作。
链接地址: http://www.djcxy.com/p/70423.html下一篇: JSDoc3: How to document a AMD module that returns a function