【问题标题】:Generating Javascript documentation [closed]生成 Javascript 文档 [关闭]
【发布时间】:2011-04-30 11:42:01
【问题描述】:

我正在寻找一种方法来从我的 Javascript 项目中自动生成文档。有谁知道我该怎么做?

据我所知,有一些工具,例如 JSDoc,但我想知道您的意见、最佳选择以及原因。

谢谢!

编辑:为了清楚起见,我需要 JavaDOC 或 PHPDocumentor 之类的东西,但要与我的 Javascript 源代码一起使用。

【问题讨论】:

标签: javascript documentation


【解决方案1】:

有像Natural Docs 这样的工具可以做到这一点。我过去曾亲自使用过它,它适用于 javascript。

还有像docco 这样的工具来记录源代码。

一般来说,自动生成的文档往往过于严格,有时像 jQuery API 这样的手工 API 更容易使用。

动态语言的文档也不同于静态语言的文档。由于 API 的使用方式不同,并且状态存在于更松散的意义上。

【讨论】:

  • +1 Docco。 JSDoc 本身的文档记录很糟糕,并且作为 JavaDoc 的一个端口,不能处理不是强 OOP 的代码——对于 JS 来说是不现实的。 Docco 有很好的文档,可以正确处理 JS,并被流行的 JS 应用程序(Backbone、Underscore)使用。
  • @nailer docco 是次优的。我认为 groc 是更好的选择之一,但我现在正在等待 TJ 为 dox 编写一个闪亮的模板层。
  • @Raynos:首先我使用的是 docco,但 groc 确实很棒!谢谢。
【解决方案2】:

我找到了一个很棒的教程来使用 JSDoc 创建 JS 文档。希望对需要的人有所帮助。

Create useful relevant Javascript documentation with JSDoc

这正是我所需要的。感谢您的回答堆垛机。

【讨论】:

    【解决方案3】:

    如果您使用 node.js,我创建了一个为 javascript/node/html/css 生成类图的模块。它基于UML的“WAE”扩展。它被称为 wavi。对于javascript,函数,变量和其他模块的使用是自动识别的。您可以使用它来记录您的应用程序。

    https://www.npmjs.org/package/wavi

    【讨论】:

      【解决方案4】:

      SmartComments + YUIDocs

      使用这对非凡的组合,您可以在不到一分钟的时间内记录一个大型 JavaScript 项目。

      SmartComments,它是一个允许您从 JavaScript 源代码创建隐式 cmets 的工具。

      您可以在控制台中使用,也可以通过 Sublime Text 插件使用。

      请转至http://smartcomments.github.io了解更多信息。

      【讨论】:

      【解决方案5】:

      autodoc 是毒品; https://www.npmjs.org/package/autodoc | https://github.com/dtao/autodoc

      Autodoc 让您可以在 JavaScript 函数上方的 cmets 中编写测试,然后从命令行运行这些测试并自动生成文档,并在浏览器中嵌入和执行相同的测试。

      想想文学编程,看看http://danieltao.com/lazy.js/docs/ 一个很好的例子。那些绿色的复选标记是测试。

      ✓ Lazy([1, 2, 4])       // instanceof Lazy.ArrayLikeSequence
      ✓ Lazy({ foo: "bar" })  // instanceof Lazy.ObjectLikeSequence
      ✓ Lazy("hello, world!") // instanceof Lazy.StringLikeSequence
      ✓ Lazy()                // sequence: []
      ✓ Lazy(null)            // sequence: []
      

      这就是源代码的样子github.com/../lazy.js#L86

      /**
       * Wraps an object and returns a {@link Sequence}. For `null` or `undefined`,
       * simply returns an empty sequence (see {@link Lazy.strict} for a stricter
       * implementation).
       *
       * - For **arrays**, Lazy will create a sequence comprising the elements in
       *   the array (an {@link ArrayLikeSequence}).
       * - For **objects**, Lazy will create a sequence of key/value pairs
       *   (an {@link ObjectLikeSequence}).
       * - For **strings**, Lazy will create a sequence of characters (a
       *   {@link StringLikeSequence}).
       *
       * @public
       * @param {Array|Object|string} source An array, object, or string to wrap.
       * @returns {Sequence} The wrapped lazy object.
       *
       *
       * @examples
       * Lazy([1, 2, 4])       // instanceof Lazy.ArrayLikeSequence
       * Lazy({ foo: "bar" })  // instanceof Lazy.ObjectLikeSequence
       * Lazy("hello, world!") // instanceof Lazy.StringLikeSequence
       * Lazy()                // sequence: []
       * Lazy(null)            // sequence: []
       */
      

      它扩展了 JSDoc https://developers.google.com/closure/compiler/docs/js-for-compiler,因此您还可以让 Google 的闭包编译器为您验证和优化很多东西。

      【讨论】:

      • 这看起来确实很有希望。开发人员在文档中声称它仍在进行中,但它目前所做的工作非常酷。
      【解决方案6】:

      您使用的是哪个框架? (如果有的话)。我认为您将选择的工具很大程度上取决于此,因为理想情况下它必须了解类扩展和所有内容。 否则我认为 jsDoc 是一个很好的起点。

      【讨论】:

        【解决方案7】:

        嗨,我刚刚找到YUIDoc。不太了解,不过看起来不错……

        【讨论】:

        • 没有。您必须在注释中定义方法/类的名称。那很不好。 (如果你重命名方法,你必须更新评论)
        猜你喜欢
        • 2012-10-02
        • 2016-06-18
        • 2014-03-21
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多