import{_ as d,o as a,c as s,a2 as n}from"./chunks/framework.B-QBKwc1.js";const b=JSON.parse('{"title":"技术栈说明","description":"本页列出项目前后端完整技术选型与版本要求,包含语言、框架、核心依赖及其选型理由,评估兼容性或升级影响时对照本表。","frontmatter":{},"headers":[],"relativePath":"zh/tech-stack.md","filePath":"zh/tech-stack.md"}'),e={name:"zh/tech-stack.md"};function p(r,t,l,i,c,h){return a(),s("div",null,[...t[0]||(t[0]=[n(`

1.5 技术栈说明 ​

概述

本页列出项目前后端完整技术选型与版本要求,包含语言、框架、核心依赖及其选型理由,评估兼容性或升级影响时对照本表。

后端技术栈 ​

类别技术选型版本说明
语言PHP>= 8.2强类型严格模式
框架ThinkPHP6.1.x核心 Web 框架
ORMthink-orm2.0数据库操作
认证firebase/php-jwt6.4+JWT 令牌签发与验证
Excelphpoffice/phpspreadsheet5.10+Excel 导入导出
数据库MySQL5.7+ / 8.0+主数据库
缓存Redis6.0+可选,缓存驱动
Web 服务器Nginx1.18+推荐
Web 服务器Apache2.4+兼容

前端技术栈 ​

类别技术选型版本说明
框架Vue3.4+核心 UI 框架
语言TypeScript4.9+(实际 ^4.9.5)类型安全
UI 库ElementPlus2.7+组件库
构建工具Vite3.2+(实际 ^3.2.10)开发服务器与构建
状态管理Pinia2.1+全局状态管理
路由Vue Router4.3+路由管理
HTTPAxios0.27+(实际 ^0.27.2)HTTP 请求(注:0.27.x 版本较老)
富文本TinyMce5.10+富文本编辑器
图表ECharts5.5+数据可视化
CSSTailwindCSS3.4+原子化 CSS
包管理pnpm-高效包管理器

架构特点 ​

text
┌─────────────────────────────────────────────────────────┐
│                    前端(Vue3 + ElementPlus)             │
│              通过 API 调用后端服务,纯 JSON 交互          │
└──────────────────────────┬──────────────────────────────┘
                           │ HTTP (JSON)
                           ▼
┌─────────────────────────────────────────────────────────┐
│                    后端(ThinkPHP 8)                  │
│                                                         │
│  路由 → 中间件栈 → 控制器 → 逻辑层 → 模型 → 数据库      │
│                                                         │
│  中间件栈:                                              │
│  CORS → Auth(JWT+权限) → Tenant(租户) → Demo → Log     │
└──────────────────────────┬──────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────┐
│                    数据层(MySQL + Redis)                │
│              MySQL 主存储,Redis 可选缓存                 │
└─────────────────────────────────────────────────────────┘
`,8)])])}const u=d(e,[["render",p]]);export{b as __pageData,u as default};