当前位置:首页 > React

react如何规划项目目录

2026-02-12 09:42:16React

规划 React 项目目录结构

React 项目的目录结构可以根据项目规模和团队需求灵活调整,以下是一些常见的目录规划方案:

按功能划分

src/
├── components/        # 通用组件(按钮、输入框等)
├── features/         # 业务功能模块(每个功能独立文件夹)
│   ├── auth/         # 认证相关
│   ├── dashboard/    # 仪表板相关
├── pages/            # 页面级组件
├── hooks/            # 自定义 hooks
├── utils/            # 工具函数
├── services/         # API 请求层
├── store/            # 状态管理(Redux/Zustand)
├── styles/           # 全局样式
├── assets/           # 静态资源
└── App.js            # 主入口

按文件类型划分

src/
├── components/
├── containers/
├── redux/
├── api/
├── styles/
└── routes/

关键目录说明

components/

  • 存放可复用的 UI 组件
  • 可按原子设计理论细分:
    • atoms/ 基础元素(按钮、图标)
    • molecules/ 简单组合(搜索框)
    • organisms/ 复杂组件(导航栏)

features/

  • 业务功能模块采用 feature-based 结构
  • 每个功能包含自己的组件、hooks 和逻辑
  • 示例:
    features/
      ├── user/
      │   ├── UserList.js
      │   ├── useUsers.js
      │   └── userSlice.js
      └── products/
          ├── ProductCard.js
          └── api/

services/

  • 集中管理 API 请求
  • 建议按资源分类:
    services/
      ├── authService.js
      ├── userService.js
      └── productService.js

进阶建议

类型安全项目

  • 添加 types/ 目录存放 TypeScript 类型定义
  • 或使用 *.d.ts 文件与对应模块共存

测试文件

  • __tests__/ 目录与对应模块平级
  • 或使用 Component.test.js 命名约定

配置分离

  • 环境变量放入 config/ 目录
  • 区分 config/dev.js, config/prod.js

路由组织方案

基础路由

routes/
├── publicRoutes.js   # 公开路由
└── privateRoutes.js  # 需要鉴权的路由

动态加载

pages/
├── Home/
│   ├── index.js
│   └── Home.module.css
└── About/
    └── index.js

样式管理方案

CSS Modules

  • 每个组件附带自己的 .module.css 文件
  • 避免全局样式冲突

Styled Components

  • 样式组件与逻辑组件共存
  • 或集中放在 styles/ 目录

状态管理方案

Redux Toolkit

store/
├── slices/         # Redux slices
├── actions/        # 传统 action creators
└── store.js        # Store 配置

Context API

  • 每个 context 在 contexts/ 目录独立管理
  • 包含 Provider 和自定义 hook

构建工具适配

Vite 项目

  • 静态资源建议放在 public/
  • 插件配置可放入 config/vite/

Next.js 项目

  • 遵循 pages/ 和 app/ 路由约定
  • API 路由放入 pages/api/app/api/

项目模板参考

社区流行结构

  • bulletproof-react(防御式编程结构)
  • feature-sliced(功能切片架构)
  • atomic-design(原子设计模式)

企业级推荐

src/
├── core/           # 框架扩展/基础配置
├── modules/        # 业务模块
├── shared/         # 跨模块共享代码
└── app/            # 应用入口层

选择目录结构时需考虑:

react如何规划项目目录

  1. 项目复杂度
  2. 团队协作需求
  3. 长期维护成本
  4. 框架特性(如 Next.js 的特殊要求)

标签: 目录项目
分享给朋友:

相关文章

项目基于vue实现

项目基于vue实现

基于Vue实现项目的关键步骤 环境搭建与初始化 安装Node.js和npm/yarn,确保开发环境具备Vue的运行条件。使用Vue CLI工具初始化项目,通过命令vue create project-…

uniapp项目源码

uniapp项目源码

Uniapp 项目源码获取方式 官方示例与模板 Uniapp 官方提供了多个开源项目模板和示例,涵盖基础框架、UI组件库等。可通过以下途径获取: 在 DCloud 插件市场 搜索“uniapp模…

uniapp项目实战

uniapp项目实战

创建UniApp项目 通过HBuilderX新建项目,选择UniApp模板,填写项目名称和存储路径。根据需求选择默认模板或自定义配置,如Vue3版本支持。 配置基础环境 在manifest.js…

vue项目实现地图

vue项目实现地图

Vue 项目中实现地图功能 在 Vue 项目中集成地图功能可以通过多种方式实现,常见的有使用高德地图、百度地图或腾讯地图的 JavaScript API。以下是几种主流地图 API 的集成方法。 使…

vue实现动态树形目录

vue实现动态树形目录

动态树形目录的实现方法 在Vue中实现动态树形目录通常涉及递归组件和动态数据加载。以下是具体实现步骤: 数据结构设计 树形数据通常采用嵌套结构,每个节点包含子节点数组: const treeDat…

vue项目实现视频播放

vue项目实现视频播放

实现视频播放的基本方法 在Vue项目中实现视频播放可以通过HTML5的<video>标签或第三方库来完成。以下是几种常见的方法: 使用HTML5 <video>标签 在Vue…