{T}

小闭环项目技术栈选型实践

概述

技术选型不是孤立的决策,而是从业务需求出发,结合团队现状、技术熟悉度、扩展性等多维度的综合考量。本文以一个完整小闭环项目为例,讲解从前端到后端、从存储到部署的全栈选型思维链。

学习目标

  • 建立"业务 → 团队 → 技术 → 扩展性"的选型思维链
  • 掌握前端请求库、CSS 方案、辅助工具的选型依据
  • 理解 NestJS + MySQL + Redis 的后端选型逻辑
  • 了解 Docker 与原生部署的方案对比

一、选型思维链

图表渲染中…
决策要素说明权重
业务需求功能需求、性能要求、用户规模最高
团队情况技术熟悉度、团队规模、协作方式最高
技术熟悉度学习成本、开发效率
扩展性技术演进、团队成长、生态支持

没有最好的技术,只有最适合的技术。


二、前端技术选型

2.1 请求方案:Axios vs Fetch

维度AxiosFetch
封装程度完善封装,开箱即用原生 API,需自行封装
拦截器请求/响应拦截器无内置拦截器
异常处理自动处理 HTTP 错误需手动判断 response.ok
超时控制timeout 配置需 AbortController
包体积~13KB原生无额外体积

选型建议:生产项目优先 Axios(稳定性和封装性好);极简项目可用 Fetch + 二次封装。

2.2 Mock 接口方案

方案特点适用场景
Mock.js拦截 XHR,生成随机数据传统项目
MSWService Worker 拦截现代前端项目
Json Server快速搭建 REST API快速原型
vite-plugin-mockVite 生态内置Vite 项目开发环境

2.3 CSS 方案

方案优点适用场景
Tailwind CSS快速开发、体积小、设计系统新项目
UnoCSS性能极致、可定制性能敏感项目
Sass + CSS Modules成熟稳定团队熟悉 Sass
Styled-components组件化样式React 项目

原子化 CSS 流行原因:无需命名、按需生成体积小、内置设计规范、IDE 插件支持好。

2.4 辅助工具

工具类型推荐方案
自动路由vite-plugin-pages
自动导入unplugin-vue-components / unplugin-auto-import
日期处理dayjs / date-fns
工具函数lodash-es / radash

三、服务端技术选型

3.1 SSR 框架

前端框架SSR 方案特点
VueNuxt.js官方推荐,生态完善
ReactNext.js官方推荐,功能强大

选择官方方案的理由:与框架深度集成、长期维护保障、社区生态完善、文档资料丰富。

3.2 后端框架:NestJS

维度评估
扩展性模块化架构,易于扩展
开发便利性装饰器语法,代码优雅
TypeScript原生支持
企业级依赖注入、模块化、测试友好

NestJS 架构层次:Module → Controller → Service → Repository → DTO。

与 Express 对比:NestJS 强制模块化避免面条代码、依赖注入便于测试和解耦、框架自动处理异常。


四、存储层选型

4.1 数据库:MySQL

维度说明
成熟稳定20+ 年发展,大规模生产验证
生态完善ORM 支持、工具链、社区资源
事务支持ACID 特性,数据一致性好

ORM 推荐

ORM特点推荐场景
Prisma类型安全,开发体验极佳新项目
TypeORMTypeScript 原生,装饰器语法NestJS 项目
Sequelize功能全面,生态成熟传统项目

4.2 缓存:Redis

典型应用场景:热点数据缓存、分布式 Session、简单消息队列、计数器/排行榜。

图表渲染中…

注意事项:缓存雪崩(随机过期时间)、缓存穿透(缓存空值)、缓存一致性(更新后失效缓存)。


五、部署方案选型

5.1 操作系统

推荐 Ubuntu LTS:5 年安全更新、apt 包管理丰富、社区活跃文档完善、新手友好。

5.2 部署方式对比

维度Docker 部署原生部署
环境一致性完美需手动配置
部署速度较慢
学习成本需学 Docker传统运维
扩展性K8s 友好手动扩展
调试难度容器内调试直接调试

Docker 部署:多阶段构建减小镜像体积、docker-compose 编排多服务。

原生部署:PM2 进程管理 + Nginx 反向代理,适合小型项目。


六、完整技术栈总览

图表渲染中…

常见问题

Q: 小项目需要 NestJS 吗?

不一定。NestJS 学习曲线较陡,小项目可能过度设计。简单 API 用 Express/Koa 即可,中大型项目或团队协作场景推荐 NestJS。

Q: Docker 和原生部署怎么选?

生产环境推荐 Docker(环境一致性、扩展性好);学习阶段或小型项目可用 PM2 + Nginx 快速部署。


延伸阅读