跳转至

项目结构

后端项目结构

src/
└── main/
    ├── java/
    │   └── com.xlf.schedule/
    │       ├── config/                # 配置模块
    │       │   ├── app/               # 应用级配置(全局Bean、任务调度等)
    │       │   ├── aspect/            # AOP切面配置(如日志、权限控制)
    │       │   ├── filter/            # 过滤器(请求过滤、中间件)
    │       │   └── init/              # 初始化逻辑(应用启动时加载的内容)
    │       ├── constant/              # 常量定义模块(状态码、枚举等)
    │       ├── controller/            # 控制层(处理HTTP请求)
    │       ├── dao/                   # 数据访问层(原生SQL操作)
    │       ├── exception/             # 异常处理模块(自定义异常类)
    │       ├── logic/                 # 业务逻辑处理(复杂操作的封装)
    │       ├── mapper/                # 数据映射(DTO <-> Entity转换)
    │       ├── model/                 # 数据模型定义
    │       │   ├── dto/               # 数据传输对象(Data Transfer Object)
    │       │   ├── entity/            # 数据实体类(与数据库表对应)
    │       │   └── vo/                # 视图对象(View Object,用于API响应)
    │       ├── service/               # 服务层(业务服务接口和实现)
    │       └── SchedulePlanningApp.java  # 应用主入口
    └── resources/
        ├── static/                    # 静态资源目录(如错误页面)
        ├── templates/                 # 模板文件目录
        │   ├── mail/                  # 邮件模板
        │   └── sql/                   # SQL模板
        ├── application.yaml           # 通用应用配置文件
        └── application-dev.yaml       # 开发环境配置文件

模块职责说明

config/ 配置模块

用于管理系统的各种配置,包括应用级Bean的定义、AOP切面、请求过滤器和系统初始化逻辑:

  • app/:定义全局配置,如任务调度器、跨域(CORS)策略等。
  • aspect/:AOP切面配置模块,处理日志记录、权限控制等通用逻辑。
  • filter/:过滤器模块,定义拦截请求或响应的逻辑,如鉴权、跨域处理。
  • init/:系统初始化模块,执行在应用启动时的初始化任务(如加载数据)。

constant/ 常量模块

存放系统中的常量定义,如状态码、全局错误消息和枚举类型,避免在代码中硬编码常量。

controller/ 控制层

负责处理来自前端的HTTP请求,并调用service中的业务逻辑完成响应。主要职责包括路由管理和API接口的实现。

dao/ 数据访问层

直接与数据库进行交互,处理CRUD操作。相比repository,这里更灵活,支持原生SQL查询和复杂的数据库操作。

exception/ 异常处理模块

定义自定义异常类,并提供全局异常捕获机制,确保系统在出现错误时返回友好的错误提示。

logic/ 业务逻辑处理模块

封装复杂的业务逻辑,将与服务层解耦的处理放入此模块,保证代码的清晰和可维护性。

model/ 数据模型模块

  • dto/:数据传输对象,用于在服务和控制层之间传递数据。
  • entity/:数据实体类,与数据库表结构一一对应。
  • vo/:视图对象,定义API响应的格式。

service/ 服务层

定义业务服务接口和实现类,处理核心业务逻辑,并与dao层交互以实现功能。

resources/ 资源文件

  • application.yaml:系统的基础配置文件。
  • application-dev.yaml:开发环境的配置文件,覆盖默认配置,便于调试。
  • schema.sql:数据库表结构的SQL脚本,用于初始化数据库。
  • data.sql:初始化数据的SQL脚本,导入一些默认数据或测试数据。
  • static/:静态资源目录,用于存放错误页面或其他静态文件。

启动流程

  1. 加载配置:应用启动时默认加载application.yaml,如果运行在开发环境,则会加载并覆盖application-dev.yaml中的配置。
  2. 静态资源处理:访问静态资源时,Spring Boot 会自动从static/目录中加载。
  3. 邮件模板使用:在发送邮件时,从templates/mail/目录中读取HTML或文本模板并进行渲染。
  4. SQL模板应用:如果需要动态SQL查询,系统会从templates/sql/目录加载对应的模板进行拼接。

前端项目结构

frontend/                  # 前端代码目录
├── public/                # 静态资源(HTML模板、图标、manifest等)
│   ├── index.html         # 前端HTML模板入口文件
│   └── favicon.ico        # 网站图标
├── src/                   # 前端源码目录
│   ├── assets/            # 资源目录(图片、图标、CSS等)
│   │   ├── images/        # 图片资源(如logo、背景图等)
│   │   ├── icons/         # 图标资源(SVG、PNG等)
│   │   └── styles/        # 样式表(CSS或SCSS文件)
│   │       ├── global.css # 全局样式文件
│   │       └── components/ # 组件级样式文件
│   ├── components/        # 公共组件(如按钮、日历、导航栏等)
│   ├── pages/             # 页面组件(如首页、课程表、好友页面)
│   ├── services/          # API服务模块(与后端交互)
│   ├── hooks/             # 自定义React Hooks(状态管理等)
│   ├── App.ts             # React应用的根组件,定义路由结构
│   └── index.ts           # React应用的入口文件
├── .env                   # 环境变量配置文件
├── package.json           # 项目依赖和脚本配置
└── README.md              # 项目说明文件

模块职责说明

assets/ —— 资源模块

用于存放项目所需的静态资源(图片、图标、样式等),将不同类型的资源分类管理,便于开发和维护。

  • images/:存储页面和组件所需的图片资源(如Logo、背景图)。
  • icons/:存放SVG或PNG格式的图标,用于按钮、导航栏等组件。
  • styles/:存储CSS/SCSS样式文件。
  • global.css:全局样式,定义项目通用的样式规则。
  • components/:组件级样式文件,为各组件提供独立的样式支持,避免样式冲突。

components/ —— 公共组件模块

存放可复用的UI组件,如按钮、日历、表单等。组件的设计符合单一职责原则,以提高可重用性。

  • 典型组件:
  • Button.js:按钮组件,支持多种样式和点击事件。
  • Navbar.js:导航栏组件,控制页面间的跳转。

职责:提供复用性强的基础组件,提高开发效率,减少代码冗余。

pages/ —— 页面模块

用于构建页面级组件,每个页面是一个独立的React组件,负责展示具体的功能界面,并通过路由进行访问。

  • 典型页面:
  • HomePage.js:首页组件,展示应用的欢迎信息。
  • SchedulePage.js:日程管理页面,显示用户的日程表。

职责:页面组件组合多个基础组件,构成完整的功能界面,并负责与service模块通信获取数据。

services/ —— API服务模块

负责与后端进行HTTP请求,封装与后端的接口逻辑,通过axios或fetch库实现。

  • 示例:scheduleService.js

提供与日程管理相关的API,如查询、创建、更新和删除日程。

职责:统一管理所有API请求逻辑,减少页面组件与后端API的耦合性。

hooks/ —— 自定义Hooks模块

存储自定义的React Hooks,用于共享状态逻辑或封装副作用逻辑。

  • 示例:useFetch.js

封装了HTTP请求的逻辑,支持在组件中直接调用,实现数据的获取和状态管理。

职责:提高代码的复用性,减少组件中的状态管理代码。

App.tsx —— 应用根组件

作为React应用的根组件,定义路由和页面结构。通过react-router-dom实现页面的跳转和导航逻辑。

职责:配置路由表,确定每个页面的访问路径,管理全局状态和布局。

index.ts —— 应用入口文件

React应用的入口文件,负责将App.js组件挂载到HTML页面中的root节点。

职责:初始化React应用,并将其注入到DOM中,使其在浏览器中运行。

public/ —— 静态资源模块

存放HTML模板、网站图标和其他静态文件。index.html是React应用的HTML入口文件。

职责:为React应用提供基础HTML模板和静态资源。

.env —— 环境变量配置模块

存储项目中的环境变量,如后端API地址、端口等配置。支持根据不同环境(开发、测试、生产)设置不同的变量。

职责:管理环境变量,避免敏感信息硬编码在代码中。

package.json —— 项目依赖与脚本配置

记录前端项目的依赖库及版本号,并提供常用的启动、构建和测试脚本。

职责:管理依赖关系,并通过脚本简化开发流程。