我正在开发一个会随着时间变得非常庞大的应用程序。我决定使用JsDoc3
并DocStrap
记录所有模块。模块是通过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] 删除。
我来说两句