优化前端项目基础架构,不是推倒重来,而是在现有项目上做渐进式改进 ,让项目更稳、更快、更好维护、更易协作。
核心思路:先诊断痛点,再定目标,分层优化,小步快跑,量化收益。
一句话:
搭建是 0 到 1,优化是 1 到 N。优化不是堆技术,而是解决实际问题。
一、先诊断:常见痛点
优化前先看项目有哪些问题:
- 启动慢、构建慢、热更新卡
- 包体积大,首屏加载慢
- 目录混乱,业务和公共代码混在一起
- 重复代码多,组件和工具散落各处
- 没有规范,代码风格不统一
- 请求、路由、权限到处写,难以维护
- 环境变量写死,部署靠手动
- 没有测试,改一处崩多处
- 没有监控,线上报错不知道
- 多人协作冲突多,CR 效率低
先列痛点,再排优先级。
二、优化原则
- 业务优先:优化不能影响业务迭代。
- 渐进式:小步改,别一次性重构。
- 可量化:构建时间、包体积、首屏、错误率。
- 自动化:能自动的不要手动。
- 标准化:目录、规范、流程统一。
- 不过度设计:小项目别上微前端、Monorepo。
- 团队共识:优化方案要团队认可,否则难落地。
三、按维度优化
1. 工程化与构建
- 升级 Vite / Webpack,启用缓存
- 用 pnpm,节省磁盘、提升安装速度
- 依赖锁定,定期升级,清理无用包
- 按需引入 UI 库,自动导入 API 和组件
- 配置分包,避免单文件过大
- 开启 gzip / brotli 压缩
- 静态资源上 CDN
- 构建缓存、Docker 多阶段构建
Vite 分包示例:
ts
build: {
rollupOptions: {
output: {
manualChunks: {
vue: ['vue', 'vue-router', 'pinia'],
element: ['element-plus'],
utils: ['axios', 'dayjs']
}
}
}
}
2. 目录与分层
- 按职责分层:api、components、composables、layouts、router、stores、utils、views
- 按业务分模块:features/user、features/order
- 公共代码放 shared,业务代码放 modules
- 避免 utils 黑洞,按领域拆文件
- 页面和组件分离,容器和展示分离
推荐结构:
text
src/
├── api/
├── components/
├── composables/
├── layouts/
├── router/
├── stores/
├── styles/
├── utils/
├── views/
└── shared/
3. 依赖管理
- 用 pnpm workspace 管理多包
- 统一依赖版本,避免重复
- 定期
pnpm outdated升级 - 用
depcheck清理无用依赖 - 锁文件提交,保证环境一致
4. 代码规范与质量
- ESLint + Prettier + Stylelint
- Commitlint + Husky + lint-staged
- TypeScript strict 模式
- 单元测试 Vitest,E2E Playwright
- 代码评审,统一 CR 清单
- 禁止
any,关键逻辑写类型
5. 请求与状态
- 统一 request 封装:baseURL、Token、错误码、Loading
- 错误统一提示,避免每个页面写一遍
- Token 刷新、登出、重定向统一处理
- Pinia 模块化,按业务拆 store
- 持久化插件,只存必要数据
- 避免把所有数据塞全局
6. 路由与权限
- 路由懒加载,按模块拆分
- 动态路由,根据权限生成菜单
- 按钮权限用指令
v-permission - 接口权限后端校验,前端只做展示控制
- 路由守卫统一处理登录、白名单、重定向
7. 组件与工具
- 基础组件:Button、Dialog、Table、Form
- 业务组件:UserSelect、OrderTable
- 组合式函数:usePagination、useRequest、usePermission
- 工具函数按领域拆:date、storage、validate、url
- 统一出口,支持按需导入
- 写 JSDoc、示例、测试
8. 样式与主题
- 设计 token:颜色、间距、圆角、字体
- CSS 变量,支持主题切换、暗黑模式
- 全局样式和局部样式分离
- 响应式方案统一:vw、rem、flex
- 避免样式污染,scoped / CSS Module
9. 性能优化
- 路由懒加载、组件异步加载
- 图片压缩、WebP、懒加载
- 长列表虚拟滚动
- 防抖节流,减少频繁请求
- 缓存:HTTP 缓存、LocalStorage、内存缓存
- 首屏优化:骨架屏、SSR、预渲染
- Lighthouse 量化,持续优化
10. 部署与监控
- CI/CD:GitHub Actions、GitLab CI、Jenkins
- 环境变量区分开发、测试、生产
- Nginx + Docker 标准化部署
- Sentry 错误监控,埋点统计
- 日志、性能监控、告警
- 回滚方案,版本管理
11. 协作与文档
- README、开发指南、部署文档
- 技术方案模板、CR 清单
- Git 分支模型:main、develop、feature、hotfix
- 组件文档:Storybook、Vitepress
- 新人上手流程,减少沟通成本
四、不同规模优化策略
| 项目规模 | 优化重点 |
|---|---|
| 小项目 | 规范、请求封装、路由、目录 |
| 中型项目 | 模块化、权限、性能、CI/CD |
| 大型项目 | Monorepo、微前端、设计系统、自动化测试 |
| 多团队 | 统一脚手架、规范、组件库、文档站 |
五、落地步骤
- 盘点现状:构建时间、包体积、首屏、错误率、重复代码。
- 定目标:比如构建提速 50%,包体积减少 30%。
- 排优先级:先解决最痛的点。
- 小步迭代:一次改一个模块,别大爆炸。
- 量化收益:改完对比数据。
- 固化成规范:写进文档,加入 CI。
- 持续演进:定期回顾,持续优化。
六、常见坑
- 为了优化而优化,忽略业务
- 一次性大重构,风险高
- 盲目追新技术,团队不熟悉
- 只优化构建,不优化运行时
- 只加规范,不配自动化
- 不做监控,线上问题不知道
- 忽略团队习惯,方案落不了地
七、总结
优化前端项目基础架构的核心:
诊断痛点、定好目标、分层优化、自动化、标准化、持续演进。
一个优化好的架构应该:
- 启动快、构建快、部署快
- 目录清晰、职责分明
- 规范统一、自动化检查
- 请求、路由、权限开箱即用
- 性能可量化、错误可监控
- 新人易上手、多人协作顺
从最痛的点开始,小步快跑,用数据说话。
如果你告诉我项目类型(后台、H5、小程序)和当前痛点,我可以给你一份具体的优化清单和落地方案。