31

还是他们只是不在源头中?我真的很想得到一些东西来阻止 js-doc-toolkit 每次解析 jQuery 时都吓坏了。这也意味着我不能正确地记录使用 jQuery 作为依赖项的任何代码,而至少要放置一些样板 js-doc 块,这些块无法正确记录 jQuery 的结构。有我不知道的通用解决方案吗?我试过谷歌搜索,顺便说一句。

4

3 回答 3

30

我将在这里暗中尝试,因为我不能代表 jQuery 团队说明为什么不使用 JSDoc。JSDoc,至少在我最后一次检查时,没有任何干净的方法来支持方法重载(或参数转换......你想在这里给它起什么名字),而 jQuery 到处都在使用它。让我们举一个简单的常见示例.animate()

.animate({ height: 5 })
.animate({ height: 5 }, 100)
.animate({ height: 5 }, 100, "linear")
.animate({ height: 5 }, 100, "linear", func)
.animate({ height: 5 }, 100, func)
.animate({ height: 5 }, func)
.animate({ height: 5 }, { duration: 100, queue: false })
.animate({ height: 5 }, { duration: 100, easing: "linear" })
.animate({ height: 5 }, { duration: 100, easing: "linear", complete: func })

所有这些都是有效的,因为根据需要检查和转换参数类型以支持尽可能多的重载场景......这只会让 JSDoc 感到困惑,没有干净的方法可以将这些可选参数添加到文档中。如果这种情况发生了变化,请纠正我,但我最后一次看(可能是团队最后一次看)情况仍然如此。

另一个潜在的考虑因素是当 jQuery 运行时如何生成一些方法,例如(许多方法之一),几乎所有事件处理程序快捷方式都是在循环中生成的,其他方法的行为类似......你将如何记录这些?JSDoc 生成在这里真的不能很好地工作。

于 2010-10-29T09:30:48.723 回答
7

不知道他们为什么不添加 JSDoc 注释,但 Google Closure 的家伙似乎保留了他们需要的“externs”的更新版本,用于具有高级优化的闭包编译器

http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/jquery-1.6.js?r=1152

于 2011-08-05T13:01:09.563 回答
4

虽然我不能添加其他人没有关于原始问题的任何其他内容,但我可以提供指向可以自动记录 jQuery 的内容的链接。

它通过在运行时环境中执行它,然后解析生成的树来做到这一点。与 JSDoc 一样,它使用修改后的 Rhino。它还处于起步阶段,但我希望这对某人有用。:)

https://bitbucket.org/nexj/njsdoc

于 2013-01-07T22:26:11.427 回答