# 开发指南

本页用于说明 G2rain 平台的开发方式、协作方式与工程化建议。

# 开发原则

  • 默认使用中文表达,除非有特殊要求
  • 默认使用 UTF-8 编码
  • 优先依据平台配置、模块 README 和官方文档理解项目
  • 不直接把源码扫描结果当作最终结论
  • 保持仓库职责隔离,不把不同模块混在一起理解

# 开发主线

# 平台开发

平台开发关注的是统一能力,包括认证、权限、资源、部门、审计、网关、应用管理和交互接入等内容。

# 业务域开发

业务域开发关注的是具体业务场景。它可以在平台能力之上组合出独立子应用,也可以围绕既有流程进行扩展。

# 前端开发

前端开发关注主壳、子应用、页面资源、路由、环境变量和联调方式。开发时要先明确自己是在主壳中运行,还是独立运行。

# 工程化开发

工程化开发关注脚手架、生成器、基础工具、Starter、模板和公共依赖。这部分的目标是降低重复劳动,让项目更容易标准化。

# 推荐的开发方式

# 新模块起步

如果是新业务模块,优先参考:

  • g2rain-app-template
  • g2rain-app-cli
  • g2rain-generator-archetype

这些仓库更适合用来快速生成项目骨架、页面结构和基础配置。

# 后端模块起步

如果是后端工程,优先参考:

  • g2rain-common
  • g2rain-spring-boot-starter
  • g2rain-mybatis-extensions

这些仓库更适合快速接入统一工具、扩展能力和基础约定。

# 前端主壳与子应用

如果是前端模块,优先理解:

  • g2rain-main-shell
  • g2rain-manager-app
  • g2rain-infra-app
  • g2rain-cms-app
  • g2rain-department-app

主壳负责统一承载,子应用负责业务页面和局部能力。

# 平台开发时应该怎么想

  1. 这是平台共性能力,还是某个业务模块的专属能力?
  2. 这项能力是资源、权限、应用,还是业务功能?
  3. 它应该放在平台核心层、交互接入层,还是业务域扩展层?
  4. 这个功能是否会影响其他仓库的协作方式?
  5. 这个功能是否需要同步更新 README、平台文档和规范文档?

# 前端开发时应该怎么想

  • 先确认当前页面是在主壳还是独立模式运行
  • 先确认环境变量和联调方式
  • 先确认页面资源、菜单和权限是否已注册
  • 先确认是否要和网关、接口、签名链路联动
  • 先确认是否需要把页面拆成可复用模块

# 工程化开发时应该怎么想

  • 先看项目是“工具类”还是“业务类”
  • 先看它是生成代码、封装能力,还是直接提供业务服务
  • 先看它依赖哪些基础模块,再决定怎么接入
  • 先看 README 是否已经说明核心能力和使用方式

# 适合先看的页面