JSDoc单文件Vue组件

tom*_*m_h 8 jsdoc vue.js

我正在尝试在我的单个文件Vue组件上运行JSDoc.我发现两个听起来应该工作的插件(两者似乎都基于相同的代码):

https://www.npmjs.com/package/vue-doc

https://www.npmjs.com/package/jsdoc-vue

当使用速记时插件会中断,但这不是一个大问题,我可以使用简写.但是,我尝试运行JSDoc的每个文件组件都会收到此错误:

相邻的JSX元素必须包装在一个封闭的标签中

这意味着我的组件没有单个根元素,但它们都有.我设置了一个类似的测试组件,但它失败了:

<template>
  <div>
    {{someData}}
  </div>
</template>

<script>
  export default {
    data () {
      return {
        someData: "Test Data"
      }
    },
    methods: {
      /**
       * Just a test function
       * @function
       */
      testFunction: function () {
        alert("Testing")
      }
    }
  }
</script>

<style lang="stylus">
  div {
    border: 1px solid;
  }
</style>
Run Code Online (Sandbox Code Playgroud)

有没有人有在.vue文件上运行JSDoc的经验?看起来它应该是可能的,但在线信息非常少.

谢谢

Bre*_*her 5

我一直在使用Documentation.js来记录我的 Vue 文件。这是一篇关于如何开始使用它的优秀文章。它的易用性给我留下了深刻的印象,它会生成美观的 HTML 文件,您可以使用这些文件轻松搜索您编写的函数。

例如,如果您创建一个如下所示的 Vue 文件:

<template>
    <div>{{mydata}}</div>
</template>

<script>
export default {
    data: function() {
        return {
            mydata: "hello"
        }
    },
    methods: {
        /**
         * Add two numbers.
         * @param{number} num1 The first number to add
         * @param{number} num2 The second number to add
         * @return{number} The sum of the two numbers.
         */
        addnums: function(num1, num2) {
            return num1 + num2;
        },

        /**
         * Concatenate two strings.
         * @param{string} str1 The first string to concatenate.
         * @param{string} str2 The second string to concatenate.
         * @return{string} The concatentation of the two strings.
         */
        concat: function(str1, str2) {
            return str1 + str2;
        }
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

运行documentation build /path/to/file.vue -f html -o docs将创建一个漂亮的 HTML 文件,在浏览器中如下所示:

在此输入图像描述

2019年编辑:

我昨天实际上发现了一个新的库,名为vuese,它是专门为记录 Vue 组件而构建的。虽然 Documentation.js 可以很好地帮助您记录方法,但 vuese 更进一步,允许您向 props 和组件添加文档。它非常容易使用。

我从这篇博文中几乎学到了我需要知道的一切。