# moon-web **Repository Path**: aide-cloud/moon-web ## Basic Information - **Project Name**: moon-web - **Description**: No description available - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2024-12-30 - **Last Updated**: 2026-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Moon Web > Moon 监控系统前端 — 基于微前端架构的多子应用管理平台
--- ### 简介 **Moon Web** 是 [Moon 监控系统](https://github.com/aide-family/moon-web) 的前端工程,采用 **微前端(Micro-Frontend)** 架构,将系统管理、消息通知、策略告警、节点探针等业务拆分为独立子应用,由主应用(Shell)统一编排导航、鉴权、主题与国际化。 ### 功能模块 | 子应用 | 说明 | 主要功能 | | ------------- | --------------- | ----------------------------------------------- | | **main** | 主应用(Shell) | 登录、布局、菜单、OAuth、Token 刷新、子应用加载 | | **goddess** | 系统管理 | 命名空间、用户管理、成员管理、个人中心 | | **rabbit** | 消息管理 | 消息模板、邮件、Webhook、消息日志、消息发送 | | **marksman** | 策略管理 | 实时告警、数据源、策略列表、告警等级、通知组 | | **jade_tree** | 节点探针 | SSH 命令、审核记录、探测任务、机器信息 | ### 技术栈 | 类别 | 技术 | | ------ | -------------------------------------------------------------- | | 框架 | React 19 + TypeScript 5 | | 构建 | Vite 7 | | UI | Ant Design 6 + Tailwind CSS 4 | | 路由 | React Router 7 | | 微前端 | [@micro-zoe/micro-app](https://micro-zoe.github.io/micro-app/) | | HTTP | Axios | | 工具库 | ahooks、dayjs、Monaco Editor | ### 架构概览 ``` ┌─────────────────────────────────────────────────────────┐ │ main(主应用 Shell) │ │ 登录 · 布局 · 菜单 · 鉴权 · 主题 · i18n · 命名空间 │ └──────────┬──────────┬──────────┬──────────┬───────────────┘ │ │ │ │ ┌─────▼────┐ ┌───▼───┐ ┌───▼────┐ ┌──▼──────┐ ┌──────────┐ │ goddess │ │ rabbit│ │marksman│ │jade_tree│ │ 独立访问 │ │ 系统管理 │ │消息管理│ │策略管理 │ │ 节点探针 │ │ 各子应用 │ └──────────┘ └───────┘ └────────┘ └─────────┘ └──────────┘ ``` - **主应用**通过 `SubAppContainer` 以 iframe 方式嵌入子应用页面。 - 各子应用可**独立开发、独立构建、独立部署**,也可单独访问(不经过主应用 Shell)。 - 子应用之间通过 `micro-app` 的 `setData` / `addDataListener` 同步路由、语言与主题。 ### 环境要求 - **Node.js** ≥ 18(推荐 20 LTS) - **pnpm** ≥ 8(项目使用 pnpm 管理依赖) ### 快速开始 ```bash # 克隆仓库 git clone git@github.com:aide-family/moon-web.git cd moon-web # 安装依赖 pnpm install # 启动全部子应用(开发模式) pnpm dev ``` 启动后访问: | 应用 | 开发地址 | 说明 | | --------- | --------------------- | ------------------ | | main | http://localhost:5172 | 主应用入口(推荐) | | goddess | http://localhost:5174 | 系统管理 | | rabbit | http://localhost:5175 | 消息管理 | | marksman | http://localhost:5176 | 策略管理 | | jade_tree | http://localhost:5177 | 节点探针 | > 使用主应用时需**同时启动所有子应用**,否则微前端嵌入页面无法加载。 ### 常用脚本 | 命令 | 说明 | | -------------------- | ------------------------------ | | `pnpm dev` | 并行启动全部 5 个子应用 | | `pnpm dev:main` | 仅启动主应用 | | `pnpm dev:goddess` | 仅启动 goddess 子应用 | | `pnpm dev:rabbit` | 仅启动 rabbit 子应用 | | `pnpm dev:marksman` | 仅启动 marksman 子应用 | | `pnpm dev:jade_tree` | 仅启动 jade_tree 子应用 | | `pnpm build` | 构建全部子应用 | | `pnpm build:main` | 仅构建主应用(其他子应用同理) | | `pnpm preview` | 预览全部构建产物 | | `pnpm lint` | ESLint 检查 | | `pnpm format` | Prettier 格式化项目代码 | | `pnpm format:check` | 检查代码格式(CI 可用) | | `pnpm typecheck` | TypeScript 类型检查 | ### 环境变量 开发环境配置见 `.env.development`,生产环境见 `.env.production`。各子应用通过 `APP_NAME` 环境变量区分,Vite 代理将 `/v1`、`/oauth2`、`/health` 转发至对应后端。 | 变量 | 说明 | 开发默认值 | | ----------------------- | ----------------- | ----------------------- | | `VITE_V1_MAIN_API` | 主应用 / 认证 API | `http://localhost:8000` | | `VITE_V1_GODDESS_API` | 系统管理 API | `http://localhost:8000` | | `VITE_V1_RABBIT_API` | 消息服务 API | `http://localhost:8001` | | `VITE_V1_MARKSMAN_API` | 策略服务 API | `http://localhost:8003` | | `VITE_V1_JADE_TREE_API` | 节点探针 API | `http://localhost:8004` | | `VITE_HEALTH_*_API` | 健康检查 API | 各服务对应地址 | 本地开发时需确保对应后端服务已启动,否则 API 请求将失败。 ### 项目结构 ``` moon-web/ ├── src/ │ ├── apps/ # 各子应用入口 │ │ ├── main/ # 主应用(Shell + 菜单配置) │ │ ├── goddess/ │ │ ├── rabbit/ │ │ ├── marksman/ │ │ └── jade_tree/ │ ├── pages/ # 页面组件(按业务模块划分) │ │ ├── goddess/ # 命名空间、用户、成员、个人中心 │ │ ├── rabbit/ # 模板、邮件、Webhook、消息、发送 │ │ ├── marksman/ # 告警、数据源、策略、等级、通知组 │ │ ├── jade_tree/ # SSH、审核、探测、机器 │ │ └── main/ # 登录页 │ ├── api/ # API 请求封装 │ │ ├── common/ # Axios 实例、公共类型 │ │ ├── account/ # 认证、用户、命名空间 │ │ ├── marksman/ # 策略与数据源 │ │ ├── rabbit/ # 消息与发送 │ │ └── jade_tree/ # 节点探针 │ ├── components/ # 通用组件(Layout、AuthGuard 等) │ ├── contexts/ # React Context(主题、语言、命名空间) │ ├── locales/ # 国际化资源(中/英) │ ├── config/ # 共享配置 │ ├── utils/ # 工具函数与 Hooks │ └── styles/ # 全局样式 ├── .env.development # 开发环境变量 ├── .env.production # 生产环境变量 ├── vite.config.ts # Vite 多应用构建配置 ├── tsconfig.app.json # TypeScript 配置 └── package.json ``` ### API 规范 - 所有 HTTP 请求统一通过 `src/api/common/request.ts` 封装的 `http` 对象发起,baseURL 为 `/v1`。 - 请求自动携带 `Authorization: Bearer