放置处理事件的类(例如 ExtJS 子类)的方法的最佳 jsduck 标头是什么?Jsduck 似乎支持与 jsdoc 相同的标签,但我不确定@event 标签是否合适。
2 回答
JSDuck 和 jsdoc-toolkit 中的@event
标签用于同一件事 - 记录由类触发的事件。
尽管 jsdoc-toolkit 文档在这部分看起来有点混乱,说 @event “描述了一个类处理的事件”,这可能使它看起来好像是为了记录侦听器。但是查看 jsdoc-toolkit问题日志,我们可以看到该功能的灵感来自于 YUI 中的事件,并且由于 ExtJS 也是从 YUI 发展而来的,它证实了@event
jsdoc-toolkit 和 JSDuck 中标签的语义平等。
但是,您似乎在询问事件处理程序 - 注册用于处理其他类触发的事件的方法。就像您有一个showPopup
方法并且您想记录该方法处理click
某个按钮上的事件一样。这与@event
标签的含义相反。
但是你真的不应该以任何特殊的方式记录你的事件处理程序——只需将它们记录为普通方法就足够了。这与记录哪些其他方法调用特定方法相同 - 有时提供此信息可能很有用,但对所有方法都这样做只是愚蠢的。
In short. Methods and events are an interface to a class - they should get documented. Registering event handlers and calling methods is how you use the interface - that's an implementation detail, don't document it (at least not on the same level as your API documentation).
事件处理程序的文档记录应与任何其他方法(@method
等)相同。@event
是您将用于可侦听事件的标记:
function Foo() {
/**
* Fired when a sandwich is made
* @event sandwich-made
* @param {my.ns.Sandwich} sandwich
*/
this.listen('sandwich-made', this.onSandwichMade, this);
}
您记录事件的位置是主观的。如果这是该事件的唯一入口点,或者如 JsDuck 文档中所示,当实际声明事件名称时,如果您确实使用方法正式添加它们,您可能会像我上面所做的那样做addEvents(events)
。
文档不是明确的,但可能@event
在给定对象的上下文中出现的任何标签都将与该对象相关联。