文档生成
功能对比

opss 提供基于 typescript 推断的全自动文档生成能力

swagger、graphql 都可以帮助我们生成后端控制器的定义,明确后端参数及返回是 低代码、可视化表单及页面 的核心功能。 而 swagger、graphql 在提供了文档的同时,也带来了一些问题,比如维护成本高、文档不准确等,这导致在现实相当大一部分程序员或者公司无力承担这样的成本。 opss 的推断能力为我们的稳固代码质量,降低开发成本的同时为开发模式同样提供了无限的可能性。

opss 相比于 swagger

特性opssswagger
样板代码默认 0 代码大量样板代码
初始化工作量仅相当于 swagger 的 1/10,一般只需要对 controller 的名称描述代码量大,维护成本高
后续维护自动化,输入、输出 参数全自动更新,可准确联想所使用到的 enum、interface 更新建模并自动引用,对 type 自动更新随着代码变更,文档需要手动维护且可能导致不准确。
扩展能力帮助用户收集控制器信息,用户可根据控制器信息,自主扩展功能。比如带有 @UseGuards(JwtAuthGuard) 需要添加 Authorization 头随着代码变更,文档需要手动维护且可能导致不准确。
未来规划云平台协作功能正在全职开发、将会提供更多的便利功能。-

opss 相比于 swagger 的工作量对比

import { Controller, Post, Body, UploadedFiles, UseInterceptors } from '@nestjs/common';
import { FileFieldsInterceptor } from '@nestjs/platform-express';
import { Express } from 'express';
 
@Controller('my') // 路由前缀
class MyController {
 
  @Post('upload-fields')
  @UseInterceptors(FileFieldsInterceptor([
    { name: 'avatar', maxCount: 1 },
    { name: 'background', maxCount: 1 },
  ]))
  async uploadFileFields(
    @Body() body: { name: string },
    @UploadedFiles() files: { avatar?: Express.Multer.File[], background?: Express.Multer.File[] }
  ) {
    // 执行上传
 
    return {
      code: 0,
      message: '上传成功',
      data: {
        avatar: files.avatar?.[0].filename,
        background: files.background?.[0].filename,
      }
    };
  }
}
 
export { MyController };

关于低代码

在未来,提供开发阶段的低代码、可视化表单及页面的功能,将会是 opss 的首要目标之一。 如果你有低代码需求、或者具备低代码开发能力,欢迎加入讨论,更多的需求与能力将会改变 opss 的未来发展方向。