- 前端框架: React 19.1.0
- UI 库: Ant Design 5.25.4
- 构建工具: Umi Max 4.3.24
- 开发语言: TypeScript 5.6.3
- 样式方案: antd-style 3.7.0
- 图表库: @ant-design/plots 2.6.0
- 地图库: @antv/l7 2.22.7, @antv/l7-react 2.4.3
- 国际化: 支持多语言(zh-CN, en-US, zh-TW, ja-JP, pt-BR, id-ID, fa-IR, bn-BD)
- 依赖管理: 使用 npm 或 yarn
- 代码质量: 使用 Biome 进行代码 lint
- Git 钩子: 使用 Husky 管理 git 钩子
- 测试: 使用 Jest 进行单元测试
- API 管理: 支持 OpenAPI 规范
- 构建方式: 使用 Umi Max 进行构建和优化
- Umi Max: 基于 Umi 的企业级前端构建方案,提供了完整的构建、部署和开发体验
- TypeScript 支持: 内置 TypeScript 编译和类型检查
- Webpack: 底层使用 Webpack 进行资源打包和优化
- 依赖分析: 分析项目依赖,生成依赖图
- 代码编译: 编译 TypeScript、Less 等文件
- 资源处理: 处理图片、字体等静态资源
- 代码分割: 自动进行代码分割,优化首屏加载速度
- Tree-shaking: 移除未使用的代码,减少包体积
- 代码压缩: 压缩 JavaScript、CSS 等文件
- 生成产物: 生成最终的构建产物到
dist目录
- 按需加载: 支持路由级别的代码分割,实现按需加载
- 缓存策略: 生成带有 hash 值的文件名,优化浏览器缓存
- CDN 支持: 支持配置 CDN 路径,加速静态资源加载
- 性能分析: 提供构建产物分析工具,帮助识别性能瓶颈
- 多环境构建: 支持不同环境的构建配置(开发、测试、生产)
- 配置文件:
config/config.ts是主要的构建配置文件 - 环境变量: 支持通过环境变量控制构建行为
- 自定义插件: 支持通过插件扩展构建功能
安装依赖:
npm install或
yarn启动开发服务器:
npm start或
npm run dev构建生产版本:
npm run build- 构建工具: 使用 Umi Max 进行构建
- 构建产物: 生成在
dist目录中 - 构建优化: 自动进行代码分割、tree-shaking 和压缩
- 环境变量: 根据
NODE_ENV自动切换环境配置
构建并预览生产版本:
npm run preview- 预览端口: 默认使用 8000 端口
- 预览服务器: 使用
max preview命令启动本地预览服务器
分析构建产物大小:
npm run analyze- 使用
rollup-plugin-visualizer生成构建产物分析报告 - 报告将显示各个模块的大小和依赖关系
构建并部署到 GitHub Pages:
npm run deploy- 执行
npm run build构建生产版本 - 执行
gh-pages -d dist将构建产物部署到 GitHub Pages
检查代码风格:
npm run lint运行单元测试:
npm test项目使用 Umi 的 request 方案进行 API 请求,封装在 services 目录中:
- 文件:
services/ant-design-pro/api.ts - 功能: 封装了常用的 API 接口,包括:
currentUser(): 获取当前用户信息outLogin(): 退出登录login(body): 登录接口getNotices(): 获取通知列表rule(params): 获取规则列表updateRule(options): 更新规则addRule(options): 新建规则removeRule(options): 删除规则
- 文件:
services/ant-design-pro/login.ts - 功能: 处理登录相关的 API 调用
- 目录:
services/swagger/ - 功能: 根据 Swagger 规范自动生成的 API 客户端,支持 pet、store、user 等模块
import { currentUser, login } from '@/services/ant-design-pro/api';
// 获取当前用户信息
const userInfo = await currentUser();
// 登录
const loginResult = await login({ username: 'admin', password: 'password' });项目自定义了一些 React Hooks,位于 src/hooks 目录:
- useMemo: 对 React.useMemo 的封装,用于优化性能
- useCallback: 对 React.useCallback 的封装,用于缓存函数引用
import { useMemo, useCallback } from '@/hooks';
// 使用 useMemo 缓存计算结果
const expensiveValue = useMemo(() => {
// 执行昂贵的计算
return calculateExpensiveValue(a, b);
}, [a, b]);
// 使用 useCallback 缓存函数
const handleClick = useCallback(() => {
// 处理点击事件
}, [dependencies]);项目采用现代 React 渲染方式,支持多种样式方案:
- 使用 ES6 箭头函数和函数声明创建组件
- 支持 TypeScript 类型定义
- 组件示例:
const HeaderDropdown: React.FC<HeaderDropdownProps> = ({ overlayClassName: cls, ...restProps }) => { const { styles } = useStyles(); return ( <Dropdown overlayClassName={classNames(styles.dropdown, cls)} {...restProps} /> ); };
- 使用
antd-style库的createStyles方法创建样式 - 支持主题变量和响应式设计
- 样式示例:
const useStyles = createStyles(({ token }) => { return { dropdown: { [`@media screen and (max-width: ${token.screenXS}px)`]: { width: '100%', }, }, }; });
- 支持传统的 Less 样式文件
- 用于全局样式和复杂样式定义
- 示例文件:
src/global.less、各页面的.less文件
- 使用
classNames库处理条件类名 - 支持动态类名组合
- 示例:
<Dropdown overlayClassName={classNames(styles.dropdown, cls)} {...restProps} />
new-deeptrace/
├── config/ # 项目配置
│ ├── config.ts # 主配置文件
│ ├── defaultSettings.ts # 默认设置
│ ├── oneapi.json # OneAPI 配置
│ ├── proxy.ts # 代理配置
│ └── routes.ts # 路由配置
├── mock/ # 模拟数据
│ ├── analysis.mock.ts # 分析页面模拟数据
│ ├── listTableList.ts # 列表页模拟数据
│ ├── monitor.mock.ts # 监控页面模拟数据
│ ├── notices.ts # 通知模拟数据
│ ├── requestRecord.mock.js # 请求记录模拟数据
│ ├── route.ts # 路由模拟
│ ├── user.ts # 用户模拟数据
│ └── workplace.mock.ts # 工作台模拟数据
├── public/ # 静态资源
│ ├── icons/ # 图标
│ ├── scripts/ # 脚本
│ ├── CNAME # CNAME 文件
│ ├── favicon.ico # 网站图标
│ ├── logo.svg # 网站 Logo
│ └── pro_icon.svg # Pro 图标
├── src/ # 源代码
│ ├── components/ # 公共组件
│ ├── hooks/ # 自定义 Hooks
│ ├── locales/ # 国际化资源
│ ├── pages/ # 页面
│ │ ├── account/ # 账户相关页面
│ │ ├── dashboard/ # 仪表盘
│ │ ├── exception/ # 异常页面
│ │ ├── form/ # 表单页面
│ │ ├── list/ # 列表页面
│ │ ├── profile/ # 个人资料
│ │ ├── result/ # 结果页面
│ │ ├── table-list/ # 表格列表
│ │ └── user/ # 用户相关页面
│ ├── services/ # API 服务
│ ├── access.ts # 权限配置
│ ├── app.tsx # 应用入口
│ ├── global.less # 全局样式
│ ├── global.style.ts # 全局样式(CSS-in-JS)
│ ├── global.tsx # 全局配置
│ ├── loading.tsx # 加载组件
│ ├── manifest.json # PWA 配置
│ ├── requestErrorConfig.ts # 请求错误配置
│ ├── service-worker.js # Service Worker
│ └── typings.d.ts # 类型定义
├── tests/ # 测试文件
│ └── setupTests.jsx # 测试设置
├── types/ # 类型定义
│ ├── cache/ # 缓存类型
│ └── index.d.ts # 全局类型定义
├── .commitlintrc.js # Commitlint 配置
├── .editorconfig # Editor 配置
├── .gitignore # Git 忽略文件
├── .lintstagedrc # Lint-staged 配置
├── .npmrc # NPM 配置
├── README.md # 项目说明
├── biome.json # Biome 配置
├── jest.config.ts # Jest 配置
├── package.json # 项目依赖
└── tsconfig.json # TypeScript 配置