欢迎来到disizhuoer的小blog

南山有杞,其叶葳蕤。朝露承之,晔晔如玑。日中则晞,零落成泥,华者易散,实者难欺。
北山有棘,其条縰縰。风过作响,谡谡如语。采之盈手,刺隐其肤,言者洵洵,心者殊殊。
中林有松,其干苍苍。冬雪压枝,不折其芒。春霆震谷,不陨其芳,贞者立世,矫者徬徨。
川上有蘋,其根沈沈。浮叶田田,蔽水成阴。拨叶视之,根腐于深,饰者驰骛,真者谦藏。
山有嘉卉,名曰卷施。朝向东隅,莫向西驰。匪风可移,匪雨可欺,诚者有守,妄者无归。
本本此世,只只此诗,蒙蒙此事,得得此失,惺惺此时,蹇蹇此势,熠熠此视,晃晃此逝。

xx大学二手交易网部署

一、前端项目(React + Vite + TypeScript)
frontend/
├─ public/ # 静态资源(无需编译,直接访问)
│ ├─ favicon.ico # 网站图标
│ ├─ logo.png # 网站Logo(如大学二手交易平台Logo)
│ ├─ empty-state.png # 空状态图片(如无商品时显示)
│ └─ robots.txt # 搜索引擎爬虫规则

├─ src/
│ ├─ api/ # 接口请求封装(统一管理后端接口调用)
│ │ ├─ index.js # 接口基础配置(Axios实例、拦截器)
│ │ ├─ product.js # 商品相关接口
│ │ │ ├─ getList() # 获取商品列表(支持分页/筛选)
│ │ │ ├─ getDetail(id) # 获取商品详情
│ │ │ ├─ publish(data) # 发布商品
│ │ │ ├─ edit(id, data) # 编辑商品
│ │ │ └─ collect(id) # 收藏/取消收藏商品
│ │ ├─ user.js # 用户相关接口
│ │ │ ├─ login(data) # 登录
│ │ │ ├─ register(data) # 注册
│ │ │ ├─ getInfo() # 获取个人信息
│ │ │ └─ updateInfo(data)# 更新个人信息
│ │ ├─ message.js # 消息相关接口
│ │ │ ├─ getList() # 获取消息列表
│ │ │ ├─ send(data) # 发送消息(咨询商品)
│ │ │ └─ read(id) # 标记消息为已读
│ │ └─ order.js # 订单相关接口
│ │ ├─ create(data) # 创建订单
│ │ ├─ getMyOrders() # 获取我的订单
│ │ └─ confirm(id) # 确认收货
│ │
│ ├─ components/ # 通用组件(可复用的UI单元)
│ │ ├─ common/ # 基础组件(全项目通用)
│ │ │ ├─ Button.jsx # 自定义按钮(适配主题风格)
│ │ │ ├─ Input.jsx # 输入框(带表单验证)
│ │ │ ├─ Modal.jsx # 弹窗组件(通用弹窗容器)
│ │ │ ├─ Toast.jsx # 提示框(成功/失败/加载中)
│ │ │ ├─ Pagination.jsx # 分页组件
│ │ │ └─ Loading.jsx # 加载状态组件(骨架屏/Spinner)
│ │ ├─ layout/ # 布局组件
│ │ │ ├─ Header.jsx # 导航栏(含搜索框、用户入口)
│ │ │ ├─ Footer.jsx # 页脚(联系我们、关于平台)
│ │ │ ├─ Sidebar.jsx # 侧边栏(分类导航,仅大屏显示)
│ │ │ └─ MainLayout.jsx # 主布局(整合Header+Footer)
│ │ └─ business/ # 业务组件(特定场景使用)
│ │ ├─ ProductCard.jsx # 商品卡片(首页/列表页展示)
│ │ ├─ ProductFilter.jsx # 商品筛选器(分类/价格/状态)
│ │ ├─ MessageItem.jsx # 消息列表项
│ │ ├─ ImageUploader.jsx # 图片上传组件(发布商品用)
│ │ └─ CampusAuth.jsx # 校园认证组件(绑定学号)
│ │
│ ├─ pages/ # 页面组件(完整页面)
│ │ ├─ Home/ # 首页
│ │ │ ├─ index.jsx # 首页入口
│ │ │ ├─ Banner.jsx # 首页轮播图(如平台公告)
│ │ │ └─ HotProducts.jsx # 热门商品推荐
│ │ ├─ Product/
│ │ │ ├─ List.jsx # 商品列表页(带筛选功能)
│ │ │ └─ Detail.jsx # 商品详情页(含留言区)
│ │ ├─ Publish/
│ │ │ └─ index.jsx # 发布商品页(表单+图片上传)
│ │ ├─ UserCenter/ # 个人中心
│ │ │ ├─ index.jsx # 个人中心入口(标签页容器)
│ │ │ ├─ MyProducts.jsx # 我的商品(已发布/已售出)
│ │ │ ├─ MyCollections.jsx # 我的收藏
│ │ │ ├─ MyOrders.jsx # 我的订单
│ │ │ └─ Profile.jsx # 个人资料(编辑头像/昵称)
│ │ ├─ Message/
│ │ │ └─ index.jsx # 消息中心(所有消息列表)
│ │ ├─ Auth/
│ │ │ ├─ Login.jsx # 登录页
│ │ │ └─ Register.jsx # 注册页
│ │ └─ Admin/ # 管理员页面(仅管理员可见)
│ │ ├─ ProductManage.jsx # 商品管理(下架违规商品)
│ │ └─ ReportHandle.jsx # 举报处理
│ │
│ ├─ store/ # 状态管理(Pinia,替代Vuex)
│ │ ├─ index.js # 状态管理初始化
│ │ ├─ userStore.js # 用户状态(登录信息/权限)
│ │ ├─ productStore.js # 商品状态(筛选条件/收藏列表)
│ │ └─ messageStore.js # 消息状态(未读数量)
│ │
│ ├─ router/ # 路由配置
│ │ ├─ index.jsx # 路由入口(定义所有路由)
│ │ └─ guard.jsx # 路由守卫(未登录拦截)
│ │
│ ├─ utils/ # 工具函数
│ │ ├─ auth.js # 登录态工具(JWT存储/解析/过期检查)
│ │ ├─ format.js # 格式化工具(价格/日期/手机号脱敏)
│ │ ├─ validator.js # 数据验证(表单字段校验)
│ │ └─ storage.js # 本地存储工具(localStorage封装)
│ │
│ ├─ assets/ # 资源文件(需编译)
│ │ ├─ styles/
│ │ │ ├─ index.scss # 全局样式(变量/混合宏)
│ │ │ ├─ reset.scss # 样式重置(消除浏览器差异)
│ │ │ └─ theme.scss # 主题样式(主色/辅助色/字体)
│ │ └─ icons/ # 图标(SVG)
│ │ ├─ collect.svg # 收藏图标
│ │ └─ message.svg # 消息图标
│ │
│ ├─ App.jsx # 根组件(路由出口)
│ ├─ main.jsx # 入口文件(渲染根组件、初始化Store)
│ └─ vite-env.d.ts # Vite类型声明(TypeScript)

├─ .env.development # 开发环境变量(本地开发用)
├─ .env.production # 生产环境变量(上线用)
├─ .eslintrc.js # ESLint配置(代码规范检查)
├─ .prettierrc # Prettier配置(代码格式化)
├─ tsconfig.json # TypeScript配置
├─ vite.config.js # Vite配置(打包/代理/插件)
└─ package.json # 项目依赖+脚本(dev/build/test)

二、后端项目(Node.js + Express + MySQL)
backend/
├─ src/
│ ├─ config/ # 配置文件(集中管理所有配置)
│ │ ├─ index.js # 配置入口(根据环境加载配置)
│ │ ├─ db.js # 数据库配置(连接池、表前缀)
│ │ ├─ jwt.js # JWT配置(密钥、过期时间)
│ │ ├─ upload.js # 上传配置(图片大小、存储路径)
│ │ └─ server.js # 服务器配置(端口、跨域)
│ │
│ ├─ controllers/ # 控制器(处理请求+返回响应)
│ │ ├─ productController.js # 商品控制器
│ │ │ ├─ getList(req, res) # 获取商品列表
│ │ │ ├─ getDetail(req, res) # 获取商品详情
│ │ │ └─ publish(req, res) # 发布商品(含参数校验)
│ │ ├─ userController.js # 用户控制器
│ │ ├─ messageController.js # 消息控制器
│ │ └─ orderController.js # 订单控制器
│ │
│ ├─ models/ # 数据模型(操作数据库)
│ │ ├─ index.js # 模型入口(初始化Sequelize)
│ │ ├─ User.js # 用户模型(表结构+关联)
│ │ ├─ Product.js # 商品模型
│ │ ├─ ProductImage.js # 商品图片模型(商品-图片一对多)
│ │ ├─ Collection.js # 收藏模型(用户-商品多对多)
│ │ ├─ Message.js # 消息模型
│ │ └─ Order.js # 订单模型
│ │
│ ├─ routes/ # 路由(定义接口地址+绑定控制器)
│ │ ├─ index.js # 路由入口(注册所有路由)
│ │ ├─ productRoutes.js # 商品路由(/api/products)
│ │ ├─ userRoutes.js # 用户路由(/api/users)
│ │ ├─ messageRoutes.js # 消息路由(/api/messages)
│ │ └─ orderRoutes.js # 订单路由(/api/orders)
│ │
│ ├─ middleware/ # 中间件(拦截请求+预处理)
│ │ ├─ auth.js # 登录验证中间件(验证JWT)
│ │ ├─ admin.js # 管理员权限中间件
│ │ ├─ upload.js # 文件上传中间件(multer封装)
│ │ ├─ validator.js # 请求参数验证中间件(joi)
│ │ ├─ errorHandler.js # 全局错误处理中间件
│ │ └─ logger.js # 日志中间件(记录请求日志)
│ │
│ ├─ services/ # 服务层(封装业务逻辑)
│ │ ├─ productService.js # 商品相关业务(如库存检查)
│ │ ├─ userService.js # 用户相关业务(如校园认证)
│ │ └─ messageService.js # 消息相关业务(如未读计数)
│ │
│ ├─ utils/ # 工具函数(通用功能)
│ │ ├─ password.js # 密码工具(bcrypt加密/验证)
│ │ ├─ jwt.js # JWT工具(生成/验证token)
│ │ ├─ logger.js # 日志工具(winston封装)
│ │ ├─ date.js # 日期工具(格式化/计算)
│ │ └─ response.js # 响应工具(统一响应格式)
│ │
│ ├─ db/ # 数据库操作(迁移+种子)
│ │ ├─ migrations/ # 数据库迁移(创建/修改表结构)
│ │ │ ├─ 20240101-create-users.js # 创建用户表
│ │ │ └─ 20240102-create-products.js # 创建商品表
│ │ └─ seeds/ # 种子文件(初始化测试数据)
│ │ └─ init-categories.js # 初始化商品分类数据
│ │
│ ├─ app.js # 应用入口(注册中间件+路由)
│ └─ server.js # 服务器启动(监听端口+连接数据库)

├─ .env # 环境变量(敏感信息,不上传Git)
│ # 示例内容:
│ DB_HOST=localhost
│ DB_USER=root
│ DB_PASS=123456
│ DB_NAME=university_secondhand
│ JWT_SECRET=xxx_university_secret
│ PORT=3000

├─ .env.example # 环境变量示例(告诉开发者需要哪些变量)
├─ .eslintrc.js # ESLint配置
├─ sequelize.config.js # Sequelize配置(ORM工具)
├─ nodemon.json # Nodemon配置(开发时自动重启)
└─ package.json # 依赖+脚本(dev/start/migrate)

三、数据库与部署相关
-数据库相关
database/
├─ init.sql # 数据库初始化脚本(创建库+用户)
├─ tables/ # 表结构脚本(手动建表备用)
│ ├─ users.sql
│ └─ products.sql
└─ backup/ # 数据库备份脚本(定时备份用)
└─ backup.sh # 自动备份脚本(MySQLdump)

-部署相关
├─ docker/
│ ├─ frontend/
│ │ └─ Dockerfile # 前端Docker镜像构建
│ ├─ backend/
│ │ └─ Dockerfile # 后端Docker镜像构建
│ └─ mysql/
│ └─ my.cnf # MySQL配置(字符集、缓存)

├─ docker-compose.yml # Docker Compose配置(一键启动所有服务)
│ # 包含服务:frontend、backend、mysql、redis、nginx

├─ nginx/
│ ├─ nginx.conf # Nginx主配置(工作进程、日志)
│ └─ conf.d/
│ └─ default.conf # 站点配置(反向代理、静态资源)
│ # 示例:
│ # 1. 静态资源(前端打包文件)直接返回
│ # 2. API请求代理到后端服务(/api → http://backend:3000

├─ redis/
│ └─ redis.conf # Redis配置(缓存过期时间、密码)

└─ scripts/ # 部署脚本
├─ deploy.sh # 自动部署脚本(拉代码+构建+重启)
└─ rollback.sh # 回滚脚本(部署失败时恢复)

四、核心文件说明(关键模块职责)
前端核心文件:
src/api/index.js:统一处理接口请求(添加 Token、错误统一处理)
src/store/userStore.js:管理用户登录状态(未登录时拦截需登录的操作)
src/middleware/auth.js:路由守卫(未登录跳转到登录页)
后端核心文件:
src/middleware/auth.js:验证请求中的 Token(确保接口安全)
src/controllers/Controller.js:接收前端参数→调用服务层→返回响应
src/services/
Service.js:封装复杂业务逻辑(如 “下单” 需检查商品状态 + 创建订单 + 发送消息)
部署核心文件:
docker-compose.yml:定义所有服务依赖(前端→后端→数据库),一键启动
nginx/conf.d/default.conf:处理所有外部请求(静态资源直接返回,API 转发到后端)

posted @ 2025-07-25 20:43  songofsunshine  阅读(9)  评论(0)    收藏  举报