如何使用 jsdoc 3 或 jsdoc 记录 Requirejs (AMD) 模块?

2024-02-02

我有两种类型的模块:

Require.js 主文件:

    require.config({
      baseUrl: "/another/path",
      paths: {
        "some": "some/v1.0"
      },
      waitSeconds: 15,
      locale: "fr-fr"
    });


    require( ["some/module", "my/module", "a.js", "b.js"],
      function(someModule,    myModule) {
      }
    );

调解者模式:

define([], function(Mediator){

var channels = {};
if (!Mediator) Mediator = {};  

Mediator.subscribe = function (channel, subscription) {   
  if (!channels[channel]) channels[channel] = [];
   channels[channel].push(subscription);
};

Mediator.publish = function (channel) {
  if (!channels[channel]) return;
  var args = [].slice.call(arguments, 1);
  for (var i = 0, l = channels[channel].length; i < l; i++) {
    channels[channel][i].apply(this, args);
  }
};

return Mediator;

});

如果可能的话,我如何使用 jsdoc3 来记录这个内容?


这是我对SO的第一个回答,请让我知道如何改进未来的答案。

你的具体例子

我已经花了两天时间寻找这个问题的答案,并且似乎没有一种方法可以自动记录 RequireJS AMD 模块而不需要一些冗余(例如重复的函数名称)。 Karthrik 的答案在生成文档方面做得很好,但是如果代码中的某些内容被重命名,文档仍然会根据 jsDoc 标签中的内容生成。

我最终做的是以下内容,是根据 Karthik 的示例进行调整的。请注意@lends第 1 行上的标记,并删除@name来自 jsDoc 注释块的标记。

 define([], /** @lends Mediator */ function(Mediator){
    /** 
     * Mediator class
     * This is the interface class for user related modules
     * @class Mediator
     */

    var channels = {};
    if (!Mediator) Mediator = {};  

    /**
      * .... description goes here ...
      * @function 
      *
      * @param {Number} channel  ..... 
      * @param {String} subscription ..............
      * @example
      * add the sample code here if relevent.
      * 
      */        
    Mediator.subscribe = function (channel, subscription) {   
      if (!channels[channel]) channels[channel] = [];
       channels[channel].push(subscription);
    };

    Mediator.publish = function (channel) {
      if (!channels[channel]) return;
      var args = [].slice.call(arguments, 1);
      for (var i = 0, l = channels[channel].length; i < l; i++) {
        channels[channel][i].apply(this, args);
      }
    };

return Mediator;

});

据我了解,@lends标签会将下一个对象文字中的所有 jsDoc 注释解释为引用的类的一部分@lends标签。在这种情况下,下一个对象文字是以function(Mediator) {. The @name标签被删除,以便 jsDoc 在源代码中查找函数名称等。

注意:我用过@exports标签与我放置的位置相同@lends标签。虽然这有效,但它会在文档中创建一个模块......而我只想为该类生成文档。这个方法对我有用!

一般 jsDoc 参考

  • jsdoc-toolkit 标签参考 http://code.google.com/p/jsdoc-toolkit/wiki/TagReference- jsdoc-toolkit 中标签的重要参考。还有很多例子!
  • 2ality 的 jsDoc 简介 http://www.2ality.com/2011/08/jsdoc-intro.html- 基于jsDoc-toolkit的综合教程。
  • jsDoc3 参考 http://usejsdoc.org- 相当不完整,但有一些例子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 jsdoc 3 或 jsdoc 记录 Requirejs (AMD) 模块? 的相关文章

随机推荐

  • 如何使用重构从类中删除泛型类型

    我有这门课 public class TimeIntCo
  • 搜索多个字符串

    我知道在文件 kmp 中查找一个字符串或在文件 trie 中查找各种字符串的有效方法 但是 多年来 我一直想知道是否有一种方法 有时认为不可能 在多个文件中搜索多个字符串 假设我有一百万个文件 我想回答诸如 查找包含字符串 香蕉 摩托艇 和
  • Pyspark结构化流Kafka配置错误

    我之前已经成功地将 pyspark 用于 Spark Streaming Spark 2 0 2 和 Kafka 0 10 1 0 但我的目的更适合结构化流 我尝试使用在线示例 https spark apache org docs 2 1
  • 微服务横向扩展数据库的最佳实践或设计

    微服务的主要好处是可以通过使用多个容器实例和负载平衡来扩展一种服务 类型 以提高吞吐量 但有一件事是 服务类型 的多个实例 即容器 共享同一个数据库实例 当多个实例在该数据库实例上写入 读取时 这可能会造成性能瓶颈 传统上 我们会扩展该数据
  • 使用 css 显示/隐藏 html 表格列

    我想显示一个基本的 html 表 其中包含用于切换显示 隐藏附加列的控件 table tr th Column 1 th th class col1 1a th th class col1 1b th th Column 2 th th c
  • Yii:HAS_MANY 搜索

    我有以下表格 user id cv personal data id cv personal data id firstname surname gender address cv laboral exp id user id positi
  • 启动时出现空白页

    在获得启动画面之前 当我启动应用程序时 我会看到一段时间的空白页 Activity但我还是明白了 怎么了 清单文件
  • Express JS 4.0 命令行工具不起作用

    我使用express 3 x有一段时间了 命令行工具运行得非常好 我决定更新到 4 0 以便我可以尝试一下并使旧应用程序兼容 4 x sudo npm install g express 安装快递完全没问题 但是当我尝试时 exprsss
  • Python多处理调用对象方法[重复]

    这个问题在这里已经有答案了 我想使用Python的多处理模块来启动一个新进程 该进程创建一些其他对象并调用该对象的loops forever方法 在我的主课中 我有 import OtherService from multiprocess
  • GWT 中的 JOptionPane.showInputDialog()

    是否有任何简单的方法来创建具有单个文本输入控件的模态对话框实例 该实例将在按 确定 时返回输入到文本控件中的字符串 我正在寻找类似于 Swing 中的 JOptionPane showInputDialog 一行的东西 您可以创建自己的类
  • 是否存在无法使用尾递归编写的问题?

    尾递归是函数式语言中重要的性能优化策略 因为它允许递归调用消耗常量堆栈 而不是 O n 是否存在根本无法用尾递归风格编写的问题 或者是否总是可以将朴素递归函数转换为尾递归函数 如果是这样 有一天函数式编译器和解释器是否会足够智能来自动执行转
  • Javascript 事件:window.event 与参数引用(函数)

    有什么区别 function test e console log Event e document querySelector button onclick test
  • 在 ASP.Net WebAPI 中,RouteParameter.Optional 是否表示 URL 的可选部分?

    我有以下路由规则 config Routes MapHttpRoute name DefaultApi routeTemplate api controller id defaults new id RouteParameter Optio
  • 为什么 Silverlight 4 Tools 只提供部分智能感知?

    我终于安装了 Silverlight 4 Toolkit 并在之后进行了引用和工作很难找到这个问题中描述的正确的命名空间 https stackoverflow com questions 2661010 how can i get sil
  • 使用nodejs创建考勤登记表

    问题 从 txt 文件中逐行读取学生姓名 对于每个名字 询问该学生是否在上课 例如 迈克尔在上课吗 是 否 让用户输入是或否 将每个名称和条目存储在另一个 txt 文件中 解决方案 我编写了这段几乎可以工作的代码 只是在循环 readlin
  • Ajax 调用 .Net 并发送回 cookie

    我正在从 html 页面 移动 向 net 服务器进行 ajax 调用以进行登录和身份验证 现在我正在发送一个 JSON 响应 结果为 success true 这一切都工作正常 但我需要设置 cookie 以便在登录后进行其他调用来记录数
  • 是否可以使用 data.table 索引连接分配习惯进行左连接并将 i 的不匹配行中的 NA 分配给 x ?

    昨天我给出了这样的答案 按五列匹配数据表以更改另一列中的值 https stackoverflow com questions 39176643 matching data tables by five columns to change
  • 由于其保护级别而无法访问该类[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个项目 IBSampleApp 在两个解决方案中使用 并且它的类在两个解决方案中都遇到以下编译器错误 由于其保护级
  • 如何创建 Java 程序的试用版 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在用java编写一个软件 我快完成了 我想知道我们如何创建一个试用版 例如可以使用30天 因为我会将其发送给一些公司 那么如何使它
  • 如何使用 jsdoc 3 或 jsdoc 记录 Requirejs (AMD) 模块?

    我有两种类型的模块 Require js 主文件 require config baseUrl another path paths some some v1 0 waitSeconds 15 locale fr fr require so