From f31c459610db512bb0bef65c70207ba3bf699f2f Mon Sep 17 00:00:00 2001 From: xie2can <384968446@qq.com> Date: Fri, 15 May 2026 13:11:16 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=20AGENTS.md=EF=BC=8C?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E4=B8=8E?= =?UTF-8?q?=20HTTP=20=E8=AF=B7=E6=B1=82=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 46 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 96a328e..66912e0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -23,27 +23,46 @@ ``` src/ index.tsx # 应用入口,将 React 根节点挂载到 #root - App.tsx # 根组件,渲染 - App.css # 根组件样式 + App.tsx # 根组件,渲染 ,包含 ConfigProvider / AntdApp 全局配置 + App.css # 全局样式(reset) router.tsx # createBrowserRouter,由路由树自动生成 - env.d.ts # Rsbuild 环境类型声明 + env.d.ts # Rsbuild 环境变量类型声明(ImportMetaEnv) routes/ types.ts # RouteItem 类型定义 index.tsx # 路由树数据(唯一数据源),导出 routes / RouteItem utils.tsx # toRouteObjects():将路由树转为 React Router RouteObject[] layouts/ - RootLayout.tsx # 根布局,包含导航链接和 + RootLayout.tsx # 根布局(Header + Sider + Content) pages/ Home.tsx # "/" 首页 About.tsx # "/about" 关于页 NotFound.tsx # "*" 兜底 404 页 + types/ + http.d.ts # 全局 API 命名空间(无需 import 直接使用 API.Response) + utils/ + request.ts # axios 实例封装,导出 get / post / put / del +.env # 本地环境变量(已 gitignore,勿提交) +.env.example # 环境变量模板(提交到仓库供参考) public/ favicon.png -rsbuild.config.ts # 构建配置 -eslint.config.mjs # ESLint 扁平配置(仅作用于 TS/TSX,忽略 dist/) +rsbuild.config.ts # 构建配置 +eslint.config.mjs # ESLint 扁平配置(仅作用于 TS/TSX,忽略 dist/) tsconfig.json ``` +## 环境变量 + +- 变量文件:`.env`(本地,已 gitignore) +- 模板文件:`.env.example`(提交到仓库) +- 新成员初始化:`cp .env.example .env` +- Rsbuild 规则:**以 `PUBLIC_` 为前缀**的变量会暴露给客户端,通过 `import.meta.env.PUBLIC_XXX` 读取 + +| 变量 | 说明 | +|------|------| +| `PUBLIC_BASE_URL` | 后端接口 baseURL | + +不同环境可创建 `.env.development` / `.env.production` 覆盖默认值,`.env.example` 中同步维护所有变量。 + ## 路由 使用 **React Router v7**(`react-router`)的 `createBrowserRouter`。 @@ -87,6 +106,21 @@ import { ConfigProvider } from 'antd'; ``` +## HTTP 请求 + +- 所有请求通过 `src/utils/request.ts` 封装的方法发出,不直接使用 `axios` +- 导出方法:`get` / `post` / `put` / `del`,返回值类型自动推断为 `API.Response` +- 全局响应结构 `API.Response` 定义在 `src/types/http.d.ts`,无需 import 直接使用 +- 请求拦截器(添加 token)和响应拦截器(处理错误码)统一在 `request.ts` 中维护 + +```ts +// 使用示例 +import { get, post } from '../utils/request'; + +const res = await get('/api/users'); +// res.code / res.msg / res.data / res.ok / res.time +``` + ## 参考文档 - Rsbuild: https://rsbuild.rs/llms.txt