React 19 + Vite 企业级前端项目:从零搭建到规范交付
本文以一个真实企业级前端项目的开发实践为基础分享如何基于 React 19 Ant Design 5 TypeScript Vite 技术栈搭建项目、组织开发流程、管理多环境运行模式以及建立质量检查体系。文中已脱敏处理聚焦通用实践。技术栈选型技术版本选型理由React19并发特性、Server Components 前沿能力Ant Design5企业级 UI 组件库Design Token 体系完善TypeScript5.x类型安全大型项目必备Vite5.x极速 HMR原生 ESM 支持构建性能优秀一、项目结构总览一个规范的企业级前端项目目录结构应按职责清晰划分project-root/ ├── src/# 业务源码│ ├── api/# API 请求层│ ├── components/# 公共组件│ ├── hooks/# 共享 Hooks│ ├── layouts/# 布局组件│ ├── models/# 数据模型│ ├── pages/# 页面模块│ ├── services/# 业务流程层│ ├── stores/# 状态管理│ ├── styles/# 全局样式│ ├── constants/# 常量定义│ ├── events/# 事件通道│ ├── lib/# 工具库│ ├── router/# 路由配置│ └── runtime/# 运行时配置├── mock/# Mock 数据与接口替身├── __tests__/# 单元测试├── scripts/# 构建与维护脚本├── docs/# 项目文档├── public/# 静态资源├── .env# 基础环境变量├── .env.mock# Mock 模式环境变量├── .env.staging# 构建部署环境变量└── package.json核心原则src/只放浏览器端业务代码mock/只放接口替身和 Mock 数据__tests__/按功能模块组织测试docs/按主题归类文档不使用src/utils/通用工具统一进入src/lib/二、常用命令速查以package.json中定义的脚本为准# 开发npminstall# 安装依赖npmrun dev# 启动本地开发服务代理模式npmstart# 等同于 npm run devnpmrun mock# 启动 Mock 模式开发服务# 构建npmrun build# 执行正式部署构建npmrun build:backend# 使用 staging 模式构建部署产物npmrun pack# 构建并打包为部署交付压缩包# 质量检查npmrun typecheck# TypeScript 类型检查npmrun lint# ESLint 检查npmrun lint:fix --文件# ESLint 自动修复npmrunformat--文件# Prettier 格式化npmtest# 运行单元测试npmrun verify:quality# 依次执行 typecheck lint test三、多环境运行模式企业级项目通常需要支持多种运行模式以适应不同的开发和调试场景。3.1 环境变量管理Vite 通过.env文件管理环境变量只有VITE_前缀的变量会暴露给浏览器端# .env基础配置所有模式共享VITE_API_BASE_URL/apiVITE_APP_TITLEMy Application# .env.local本地覆盖不提交到仓库VITE_API_BASE_URLhttp://192.168.1.100:8080/api3.2 三种运行模式模式启动方式环境文件适用场景代理模式npm run dev.env.env.local内网联调请求代理到后端服务Mock 模式npm run mock.env.env.mock本地开发、离线验证、回归检查构建模式npm run build.env.env.staging生成部署产物接入真实后端3.3 Mock 模式的实现Mock 模式的核心是通过vite-plugin-mock拦截 API 请求返回预设数据// mock/user.tsimport{MockMethod}fromvite-plugin-mockexportdefault[{url:/api/current-user,method:get,response:()({id:001,name:测试用户,roles:[admin],}),},]asMockMethod[]关键约束Mock 数据只服务本地开发和验证不作为正式数据源接入后端接口时必须同步补充同路径 MockMock 实现不需要编写单元测试3.4 开发代理配置在vite.config.ts中配置代理将请求转发到后端服务exportdefaultdefineConfig({server:{proxy:{/api:{target:process.env.VITE_BACKEND_HOST||http://localhost:3000,changeOrigin:true,},},},})四、构建与部署4.1 构建产物命令产物说明npm run builddist/标准构建产物npm run build:backenddist/manifest.json带资源清单的构建产物npm run packoutput/deploy.zip构建 打包为部署压缩包4.2 Manifest 文件manifest.json记录构建产物的资源映射关系供后端框架如 Node SSR、Java Thymeleaf引用{src/main.tsx:{file:assets/main-[hash].js,css:[assets/main-[hash].css]},index.html:{file:index.html}}4.3 部署注意事项构建产物只表达前端静态资源不包含后端集成逻辑部署前确认环境变量已正确配置生产构建默认启用代码分割和资源哈希五、质量检查体系5.1 检查流程提交代码前按改动范围运行定向检查代码改动 → TypeScript 检查 → ESLint 检查 → 单元测试 → 提交# 完整质量检查CI 或发版前npmrun verify:quality# 日常开发定向检查npmrun typechecknpmrun lintnpmtest5.2 自动修复# ESLint 自动修复指定文件npmrun lint:fix -- src/pages/user/api.ts# Prettier 格式化指定文件npmrunformat-- src/pages/user/api.ts注意自动修复后必须 review 实际 diff不要因为命令执行成功就跳过检查。5.3 测试策略采用最小影响链路原则页面改动 → 运行boundaries/基线测试共享逻辑改动 → 扩大到受影响模块的测试全局能力改动 → 扩大到相关页面和组件的定向测试# 运行边界测试所有 src 改动的固定基线npmrun test:unit:boundaries# 运行指定模块测试npmrun test:unit ----dirapi-request5.4 ESLint 与 Prettier 配置// eslint.config.jsFlat Config 格式importjsfromeslint/jsimporttseslintfromtypescript-eslintexportdefault[js.configs.recommended,...tseslint.configs.recommended,{rules:{typescript-eslint/no-explicit-any:warn,no-console:[warn,{allow:[warn,error]}],},},]// prettier.config.jsexportdefault{semi:false,singleQuote:true,trailingComma:all,printWidth:100,}六、开发规范要点6.1 代码分层业务代码按职责严格分层层目录职责禁止APIsrc/api/请求发送、DTO 转换业务流程逻辑Servicessrc/services/业务流程编排DOM 操作Storessrc/stores/状态管理请求逻辑Modelssrc/models/数据模型定义UI 渲染Pagessrc/pages/页面组合可复用业务逻辑6.2 文件命名目录kebab-case如incident-ledger/组件文件PascalCase如UserAvatar.tsx工具文件kebab-case如date-utils.ts类型文件kebab-case如user-types.ts6.3 接口规范使用统一的 API 响应格式// 统一响应格式typeApiResponseT{code:numbermessage:stringdata:T}// API 请求层示例asyncfunctionfetchUserList(params:UserQuery):PromiseApiResponseUser[]{returnrequest.get(/api/users,{params})}6.4 错误处理// 统一错误处理asyncfunctionsafeRequestT(fn:()PromiseT):Promise[T|null,Error|null]{try{constdataawaitfn()return[data,null]}catch(error){console.error(Request failed:,error)return[null,errorasError]}}七、环境变量清单变量名用途使用位置VITE_API_BASE_URLAPI 基础路径请求层VITE_BACKEND_HOST后端服务地址开发代理VITE_APP_TITLE应用标题HTML 模板VITE_DEPLOY_NAME部署名称构建产物目录只使用VITE_前缀变量确保不会泄露服务端密钥到浏览器端。八、常见问题Q1: Mock 模式下接口返回 404检查 Mock 文件的url是否与实际请求路径一致确保 Mock 文件已正确导出。Q2: TypeScript 检查报错但编辑器不报错运行npm run typecheck确认编辑器可能需要重启 TypeScript 服务。Q3: 构建产物过大检查是否有未使用的依赖使用npx vite-bundle-visualizer分析打包产物。Q4: 代理模式请求超时确认VITE_BACKEND_HOST配置正确检查网络连通性和防火墙设置。总结一个规范的企业级前端项目应该具备清晰的目录结构按职责划分每个目录有明确的边界多环境支持代理模式、Mock 模式、构建模式各有适用场景自动化质量检查TypeScript ESLint Prettier 单元测试统一的代码分层API → Services → Stores → Models → Pages完善的文档体系入口文档驱动变更同步更新这些实践的核心目标是让正确的做法成为阻力最小的做法。当规范足够清晰、工具足够好用时团队自然会遵循而不是靠口头约束。本文基于 React 19 Ant Design 5 TypeScript Vite 技术栈适用于中大型企业级前端项目。具体配置可根据团队实际情况调整。

相关新闻

一个8年工作经验的程序员的畅谈Vibe coding

一个8年工作经验的程序员的畅谈Vibe coding

在AI飞速发展的今天,“Vibe coding”已成为主流开发模式。我在参与许多大厂的分享会后得知,有些大厂甚至推出了“古法编程”排行榜。这不禁让我思考:程序员的工作热情是否会随着AI的发展而日益消退?是否所有程序员都将变成可被替换…

2026/10/16 5:40:09 阅读更多 →
VLM工具化推理:强化学习如何教会视觉大模型“动手”解决问题

VLM工具化推理:强化学习如何教会视觉大模型“动手”解决问题

1. 从“看图说话”到“看图做事”:VLM工具化推理的必然之路最近在跟进视觉语言大模型(VLM)的落地应用时,我一直在思考一个问题:我们训练出的模型,识别和理解能力越来越强,但很多时候它们更像是一…

2026/10/17 4:58:02 阅读更多 →
8 轮断点、794 次命中,我抢回了自己微信 4.1 的聊天记录

8 轮断点、794 次命中,我抢回了自己微信 4.1 的聊天记录

8 轮断点、794 次命中,我抢回了自己微信 4.1 的聊天记录微信 4.1 的本地聊天记录能解密,但现成工具已全部阵亡。我用一天一夜、794 次断点命中,把自己的 24 个数据库全部解开。2026 年 7 月 28 日晚上,高速公路项目部的宿舍里,我第 4 次把微信从调试器的误杀里救回来,重新扫码登…

2026/10/16 17:16:46 阅读更多 →

最新新闻

强化学习数学原理全解析:从贝尔曼方程到Actor-Critic知识地图

强化学习数学原理全解析:从贝尔曼方程到Actor-Critic知识地图

简介:《强化学习的数学原理》是西湖大学赵世钰教授撰写的英文专著,面向具备一定数学基础、希望从零系统理解强化学习本质的读者。全书以数学推导为主线,结合大量例子循序渐进地展开,涵盖基础概念、状态值与贝尔曼方程、最优状态值…

2026/10/17 15:18:53 阅读更多 →
Docker安装部署全攻略:从环境检查到镜像加速与踩坑排查

Docker安装部署全攻略:从环境检查到镜像加速与踩坑排查

标题已经写得很直白,这一章就是动手装东西。不管你是刚看完前面几章准备自己折腾一套开发环境,还是公司里要在一台新机器上把运行环境铺起来,Docker安装部署都是绕不开的第一步。这篇文章我会把整个安装过程掰开揉碎,从最开始的版…

2026/10/17 15:18:53 阅读更多 →
深入理解回调函数:从异步编程到错误优先设计

深入理解回调函数:从异步编程到错误优先设计

1. 从一次代码调试说起:为什么回调函数让人又爱又恨 刚入行那会儿,我接手过一个数据处理的小工具,功能很简单:从一批文件里读取内容,解析后写入数据库。代码写完后跑起来,结果却让人抓狂——数据库里空空如…

2026/10/17 15:18:53 阅读更多 →
BLE胎压监测产品通讯协议与低功耗流程方案实战

BLE胎压监测产品通讯协议与低功耗流程方案实战

1. 项目概述与方案选型做胎压监测产品,最绕不开的一个环节就是通讯协议怎么定、数据流程怎么走。这直接决定了产品的功耗表现、连接稳定性、手机端体验,甚至决定了你能不能过认证。我这次要分享的就是一套完整的 BLE 胎压/压力产品通讯协议与流程方案 v1…

2026/10/17 15:18:53 阅读更多 →
OpenWAM世界-动作模型:具身智能架构设计与部署实践

OpenWAM世界-动作模型:具身智能架构设计与部署实践

1. 具身模型赛道的分野与OpenWAM的切入点1.1 从VLA到WAM:一条被忽视的技术路线过去两年,只要聊到机器人智能,几乎绕不开VLA(Vision-Language-Action)这个词。从Google的RT系列到各类开源VLA模型,整个行业的…

2026/10/17 15:18:53 阅读更多 →
线程池+epoll:构建高并发网络服务的关键骨架

线程池+epoll:构建高并发网络服务的关键骨架

1. 先想明白:单线程模型到底堵在哪里1.1 一个连接一个线程的代价网络服务做到第二步,很多项目会开始纠结一个问题:accept 到新连接之后,到底在哪条线程里处理读写?最直觉的方案是“thread per connection”&#xff0c…

2026/10/17 15:17:53 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →