对于大型应用程序使用JsDoc3,如何将模块分组为部分/类别/子模块

阿德里安·莫伊萨(Adrian Moisa)

我正在开发一个会随着时间变得非常庞大的应用程序。我决定使用JsDoc3DocStrap记录所有模块。模块是通过require.js定义的,在某些地方,它们最多嵌套3或4层。

到目前为止,我了解JsDoc文档分为四个主要部分:模块,类,教程,全局变量。每个部分都有一个标题下拉菜单和一个侧栏,每个标题栏均按字母顺序线性列出所有模块。

我想知道是否有显示/分组模块和类的选项以某种方式反映项目结构。我看到了一个git存储库,其中记录了所有带有许多斜杠的类module1/submodule1/class1,但确实确实需要消化这种导航类型。更不用说布局出现问题,侧边栏溢出了长标题。

目前,我的项目布局类似于波纹管中的架构。它广泛而深入,我希望它会进一步发展。

/Editor
---/Services
------/UI
------...
---...
---editorApp.js
/Engine
---/Core
------/...
---/Entities
------/...
---/Graphics
------/...
---/...
...
engine.js
/Web
---/Services
------/UI
------...
---...
---webApp.js
查维

很好的问题。我也遇到了同样的问题。

我使用名称空间将类组合到一个包中。一个大项目可能具有多个名称空间。一个非常大的项目可能具有名称空间,其成员本身就是名称空间。

命名空间基本上是静态对象的分组。您可以@namespace用来记录对象文字或不应构造的“静态类”,例如本机Math类。

不幸的是,没有简单的方法将模块标记为名称空间的成员,因此我已经@module完全放弃了该标签,仅使用@class@namespace关于模块的另一个非常烦人的事情是,您必须module:在JSDoc注释中每次提及模块之前都添加一个前缀。例如,您必须做@type {module:my_mod}而不是仅仅@type {my_mod}

因此,您的项目结构如下所示:

Editor.js

/**
 * description of Editor.
 * @namespace Editor
 */
 const Editor = {
   Services: require('./Services.js'),
   ...
 }
 module.exports = Editor

Services.js

/**
 * description of Services.
 * @namespace Editor.Services
 *            ^^^^^^^ shows it’s a member of Editor
 */
 const Services = {
   UI: require('./UI.js'),
   ...
 }
 module.exports = Services

UI.js(假设UI是一个类)

/**
 * description of UI.
 * @memberof Editor.Services
 * ^^^^^^^^^ need to tell JSDoc UI is a member
 * @class
 * ^^^^^^ optional, as JSDoc knows ES6 classes
 */
class UI {
  constructor() {...}
}
module.exports = UI

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用RequireJS和JSDoc3记录木偶模块

使用子模块应用程序编译Modular Boost 1.55.0

如何将NASM应用程序分解为模块/软件包并将其包括在内?

如何注入模块并使它可用于应用程序的所有模块和子模块(获取未知的提供程序错误)

如何使用Koin DI将应用程序上下文从“应用程序”模块注入到“网络”模块

Angular-如何将模块导入子模块?

如何将 .env 与 ES6 模块与 node js 和 express 应用程序一起使用?

应用程序无法使用模块的模块

如何将Scala.js应用程序转换为CommonJS模块?

如何将RequireJS模块集成到AngularJS应用程序中?

如何将angular.js模块导入Angular应用程序?

如何在React应用程序中导入highcharts子模块

如何对 Angular 应用程序子模块的所有组件执行 ng 测试

如何将C ++程序分解为模块

大型企业Java应用程序-模块化

如何将父模块中的模块导出到子模块

如何使用Maven和NetBeans将应用程序打包到JPMS模块中?

如何使用Connexion模块运行PyQt应用程序?

如何根据应用程序设置使用不同的模块?

如何将PyTorch子模块保持在评估模式?

如何将更改恢复到git子模块?

如何将子模块中的类/函数相互导入?

如何将git子模块导入NetBeans 8.1?

如何将子模块导入父命名空间?

将 TypeScript 模块从本地模块导入 React 应用程序

如何配置Guice以要求对整个应用程序(对于所有模块)进行显式绑定

如何动态地将模块注入到主要的Angular应用程序模块

ModuleNotFoundError:没有名为Foo的模块-如何将模型导入Django应用程序的脚本中?

Spring-如何将组件从另一个模块注入到SpringBoot应用程序中