# ADR-RSMS-001:技术栈选型 > ADR 编号:ADR-001 > 状态:已决策(代码已先行,补录) > 日期:2026-07-31 > 项目:RSMS ## 背景 项目启动时需要确定前端框架、后端框架和数据库选型。项目为内部管理后台,初期规模可控,但需考虑 37 个站点、约 500 名记者的数据增长。 ## 选项 ### 前端 | 选项 | 优点 | 缺点 | |---|---|---| | A. React + Vite + TypeScript | 生态成熟、类型安全、Vite 热重载快、团队熟悉度高 | 学习曲线存在(对新手) | | B. Vue + Vite + TypeScript | 上手快、单文件组件直观 | 团队 React 经验更丰富 | | C. 原生 HTML + JS | 无依赖 | 不可维护 | ### 后端 | 选项 | 优点 | 缺点 | |---|---|---| | A. Express.js + Node.js | 轻量、路由灵活、JSON 原生、团队熟悉 | 需自行处理结构化代码 | | B. Spring Boot (Java) | 生态完善、企业级 | 需要 JDK 环境、启动慢 | | C. Django (Python) | 快速开发、内置 ORM | GIL 限制并发、对团队熟悉度低 | ### 数据库 | 选项 | 优点 | 缺点 | |---|---|---| | A. SQLite(WAL 模式) | 零配置、文件级、无服务进程、适合本地开发 | 并发写入受限(当前规模可接受) | | B. PostgreSQL | 关系型权威、功能强大、并发好 | 需要安装运行、增加运维成本 | | C. JSON 文件 | 零配置 | 无查询能力、无法处理关联 | ## 决策 - **前端**:React + Vite + TypeScript(选项 A) - **后端**:Express.js + Node.js(选项 A) - **数据库**:SQLite(WAL 模式)(选项 A) ## 理由 1. **React + Vite**:团队已有 React 经验;Vite 提供极快的热重载体验;TypeScript 提供编译期类型检查,减少运行时错误;Recharts 作为数据可视化方案与 React 生态无缝集成。 2. **Express.js**:轻量、路由直观;JSON 作为 API 响应格式零序列化成本;`node --watch` 支持开发热重载;无额外配置。 3. **SQLite**:零运维成本,文件即数据库;WAL 模式支持读写并发(读不阻塞写);数据文件可随 Git 管理(需注意 .gitignore);当前规模(37 站 x 500 人)完全在 SQLite 处理能力内。 ## 升级路径 | 组件 | 升级触发条件 | 目标方案 | |---|---|---| | 数据库 | 并发写入成为瓶颈(预估 > 100 并发写入/秒) | 迁移至 PostgreSQL | | 后端 | 业务逻辑复杂度增加 | 考虑 NestJS 或 DDD 架构重构 | | 前端 | 页面数量 > 30 或团队 > 5 人 | 引入 React Router、状态管理(Redux Toolkit) | ## 风险 - SQLite 在极高并发写入场景下可能成为瓶颈(当前评估:低风险) - 前后端均使用 JS/TS,技术栈统一,全栈可复用类型定义(未来引入 tRPC 可进一步增强类型安全)