还是他们只是不在源头中?我真的很想得到一些东西来阻止 js-doc-toolkit 每次解析 jQuery 时都吓坏了。这也意味着我不能正确地记录使用 jQuery 作为依赖项的任何代码,而至少要放置一些样板 js-doc 块,这些块无法正确记录 jQuery 的结构。有我不知道的通用解决方案吗?我试过谷歌搜索,顺便说一句。
3 回答
我将在这里暗中尝试,因为我不能代表 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 生成在这里真的不能很好地工作。
不知道他们为什么不添加 JSDoc 注释,但 Google Closure 的家伙似乎保留了他们需要的“externs”的更新版本,用于具有高级优化的闭包编译器
http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/jquery-1.6.js?r=1152
虽然我不能添加其他人没有关于原始问题的任何其他内容,但我可以提供指向可以自动记录 jQuery 的内容的链接。
它通过在运行时环境中执行它,然后解析生成的树来做到这一点。与 JSDoc 一样,它使用修改后的 Rhino。它还处于起步阶段,但我希望这对某人有用。:)