Skip to content

搭建项目架构

目录结构

bash
project-root/
├── public/                     # 静态资源(不经过构建,原样拷贝到 dist)
   └── vite.svg
├── src/
   ├── api/                    # 接口请求层:按模块划分 API 请求函数
   ├── request.ts          # axios 实例封装(拦截器、错误处理、token 注入)
   └── modules/            # 各业务模块的接口定义
   ├── assets/                 # 需要构建处理的静态资源
   ├── images/             # 图片
   ├── icons/              # 图标
   └── styles/             # 全局样式、变量、主题
   ├── components/             # 全局通用组件(与业务无关)
   ├── common/             # 基础组件(按钮、弹窗封装等)
   └── business/           # 跨页面复用的业务组件
   ├── config/                 # 全局配置(站点信息、常量、环境映射)
   ├── constants/              # 常量定义(枚举、字典、正则)
   ├── hooks/                  # 自定义 Hooks
   ├── layouts/                # 布局组件(BasicLayout 侧边栏+头部+内容区)
   ├── router/                 # 路由配置
   ├── index.tsx           # 路由入口
   └── routes.tsx          # 路由表(含懒加载、权限标记)
   ├── store/                  # 状态管理(Zustand / Redux Toolkit)
   ├── index.ts            # store 入口
   └── modules/            # 按模块划分 store
   ├── types/                  # 全局 TypeScript 类型声明(.d.ts)
   ├── utils/                  # 工具函数(格式化、校验、storage 封装等)
   ├── views/                  # 页面组件(与路由一一对应)
   ├── login/              # 登录页
   ├── dashboard/          # 首页/工作台
   ├── system/             # 系统管理(用户/角色/菜单)
   └── error/              # 403 / 404 等错误页
   ├── App.tsx                 # 根组件(挂载路由、全局 Provider)
   ├── main.tsx                # 应用入口(ReactDOM 渲染)
   └── vite-env.d.ts           # Vite 环境变量类型声明
├── .husky/                     # Git 钩子(commit-msg 校验提交信息)
├── .editorconfig               # 编辑器统一编码风格
├── .prettierrc                 # Prettier 代码美化规则
├── .prettierignore             # Prettier 忽略文件
├── .gitignore                  # Git 忽略文件
├── commitlint.config.js        # 提交信息校验规则
├── eslint.config.js            # ESLint 代码检查规则
├── index.html                  # HTML 模板入口
├── package.json                # 依赖与脚本
├── pnpm-lock.yaml              # pnpm 锁文件
├── tsconfig.json               # TS 根配置(引用各子配置)
├── tsconfig.app.json           # 应用代码 TS 配置(含路径别名 @)
├── tsconfig.node.json          # 构建工具代码 TS 配置
└── vite.config.ts              # Vite 配置(插件、别名、代理)

目录说明

目录职责说明
public静态资源不经过构建,原样拷贝到 dist
src/api接口层统一管理后端请求,页面不直接写 axios
src/api/modules接口模块按业务模块划分 API 请求函数
src/assets静态资源会被 Vite 打包处理(hash、压缩)
src/assets/images图片资源项目中使用的图片文件
src/assets/icons图标资源SVG 图标或自定义图标库
src/assets/styles样式资源全局样式、CSS 变量、主题配置
src/components通用组件不含业务逻辑,可在任意页面复用
src/components/common基础组件与业务无关的 UI 组件(按钮、弹窗、表单控件等封装)
src/components/business业务组件跨多个页面复用的业务组件(用户选择器、部门树等)
src/config全局配置站点信息、常量、环境映射
src/constants常量定义枚举、字典、正则表达式
src/hooks自定义 Hooks封装可复用的状态逻辑(usePermission、useTable 等)
src/layouts布局管理后台的骨架:侧边栏、头部、面包屑、内容区
src/router路由集中式路由表,配合懒加载与权限控制
src/router/index.tsx路由入口路由组件挂载与导出
src/router/routes.tsx路由表路由配置数组,含懒加载、权限标记
src/store状态管理按模块拆分,避免单一 store 膨胀
src/store/modules状态模块按业务模块拆分 store(user、app、permission 等)
src/types类型声明全局接口、枚举类型统一管理(.d.ts)
src/utils工具函数纯函数,不依赖 React(格式化、校验、storage 封装等)
src/views页面业务页面,目录结构与路由路径保持一致
src/views/login登录页用户登录、注册、忘记密码
src/views/dashboard工作台首页数据概览、快捷入口
src/views/system系统管理用户管理、角色管理、菜单管理、权限配置
src/views/error错误页403 无权限、404 页面不存在、500 服务器错误
.huskyGit 钩子配置 commit-msg 等钩子,校验提交信息
src/App.tsx根组件挂载路由、全局 Provider(主题、国际化、状态管理)
src/main.tsx应用入口ReactDOM 渲染,挂载到 index.html
src/vite-env.d.ts类型声明Vite 环境变量类型定义

命名约定

  • 目录:小写 + 中划线(kebab-case),如 user-manage/
  • 组件文件:大驼峰(PascalCase),如 UserTable.tsx
  • 工具/hooks/普通 ts 文件:小驼峰(camelCase),如 usePermission.ts
  • 常量:全大写 + 下划线,如 API_BASE_URL