前言:最后的“最后一公里”
兄弟们,经过前面十几篇文章的狂轰滥炸,我们终于走到了这一步。 我们搞定了 React 状态管理,重构了复杂的表单,用 Next.js 实现了 SSR,甚至用 Server Actions 把后端逻辑都写好了。
现在,你的代码静静地躺在 GitHub 仓库里,或者在你本地的 localhost:3000 上跑得飞起。
但这就好比你造了一辆法拉利,却把它锁在自家车库里,没人看得到。
我们要上线!
回想一下当年的“至暗时刻”:
- 买个阿里云/腾讯云服务器。
- SSH 连上去,装 Node.js,装 Nginx,装 PM2。
- 本地
npm run build,打包出一个dist文件夹。 - 打开 FileZilla,把文件 FTP 传上去。
- 修改 Nginx 配置,重启服务。
- 这时候如果你发现有个 Bug?重复以上所有步骤。
太 Low 了。真的。 在这个 AI 都能写代码的时代,如果你还在手动拖拽文件部署,那你是在浪费生命。
今天,完结篇,我们要聊聊 CI/CD (持续集成/持续部署) 与 Vercel。让你体验什么叫“喝着咖啡,代码自己就上线了”。
什么是 Vercel?不仅仅是“免费空间”
很多前端新人觉得 Vercel 就是个免费的静态托管网站(就像当年的 GitHub Pages)。 格局小了。
Vercel 是 Next.js 的亲爹。它把一套企业级的 DevOps 流程封装成了一个傻瓜式的产品。 它的核心逻辑是:Git 驱动部署 (Git-based Deployment)。
你不需要买服务器,不需要配 Nginx,不需要搞 SSL 证书(HTTPS),不需要管负载均衡。 你只需要做一件事:把代码 Push 到 GitHub。
实战演练:从 Push 到 Live 只需要 30 秒
第一步:关联仓库
- 去 Vercel 官网注册个号(直接用 GitHub 登录)。
- 点击 "Add New Project"。
- 从你的 GitHub 列表里选中那个 Next.js 项目。
- 关键点:Environment Variables(环境变量)。
还记得我们在代码里用的
DATABASE_URL吗?千万别把.env文件提交到 GitHub!要在 Vercel 的面板里填进去。
第二步:触发构建
点击 "Deploy"。
这时候 Vercel 的云端构建服务器启动了。它会自动识别你是 Next.js 项目,自动执行 npm install,自动执行 npm run build。
第三步:见证奇迹
几十秒后,屏幕飘起彩带。你获得了一个 https://your-project.vercel.app 的域名。
点开它,你的应用已经活着了。并且自带 HTTPS 小绿锁。
第四步:CI/CD 的真谛
这就完了?最爽的在后面。
现在,你去代码里随便改个字(比如把标题改一下),然后 git commit,git push。
不需要任何操作。 你会发现 Vercel 检测到了代码变动,自动开始了新的一轮构建。 一分钟后,你刷新刚才那个网址,内容已经变了。
这就是 CD (Continuous Deployment)。你只管写代码,发布的事情交给机器人。
杀手级功能:预览部署 (Preview Deployments)
在团队开发里,这功能简直是神器。
假设你的同事小王开发了一个新功能,提了一个 Pull Request (PR) 到 main 分支。
你作为组长,要怎么通过验收?把他的代码拉下来跑一遍?太麻烦了。
Vercel 会自动为每一个 PR 生成一个独立的预览链接。
比如 project-git-feature-new-login.vercel.app。
你点开这个链接,就能看到小王的新功能跑起来是什么样。
如果没问题,你点击 Merge。代码合并到主分支,Vercel 再自动更新生产环境。
这彻底改变了团队协作的流程。“在我的机器上是好的”这句话,彻底成为了历史。
全球边缘节点 (Edge Network):让应用比快更快
你可能会问:“Vercel 的服务器在哪?美国吗?那国内访问岂不是慢死?”
这就是 Edge (边缘计算) 的概念。 Vercel 并不是把你的网站放在一台服务器上,而是分发到了全球几十个 CDN 节点(包括香港、新加坡、东京等)。
- 静态资源(HTML/CSS/图片):用户访问时,会自动连接离他物理距离最近的节点。北京的用户连日本/香港节点,伦敦的用户连伦敦节点。
- Serverless Functions (API):你的 Next.js API 路由和 Server Actions,也是按需在边缘运行的(或者配置为特定区域)。
这就好比你在全国开了 50 家分店,客户饿了直接去楼下吃,而不是所有人都要坐飞机去总店排队。
避坑指南:Vercel 也不是万能的
虽然吹了这么多,作为老司机,必须得告诉你现实中的坑:
-
数据库连接问题: 你的应用跑在 Edge(边缘),但你的数据库(比如 AWS RDS)可能还在美国弗吉尼亚的一个机房里。 “边缘 -> 核心数据库”的物理延迟是无法消除的。 解决办法:使用支持边缘连接的数据库(如 Neon, Supabase, PlanetScale),或者在 Next.js 配置里把 Server Function 锁定在离数据库近的区域。
-
Serverless 冷启动: 如果你的网站很久没人访问,服务器函数会“休眠”。下一个倒霉蛋访问时,可能要等个 1-2 秒唤醒。 解决办法:那是钱的事。付费版可以配置预热,或者用 Edge Runtime(几乎无冷启动)。
-
厂商锁定: 用了 Vercel 的特有功能(比如 Vercel KV, Vercel Blob),以后想迁移到自己的阿里云服务器上会比较麻烦。 建议:尽量保持代码的通用性,少用平台绑定的 SDK。
系列总结:从入门到起飞
兄弟们,写到这里,“React 实战进阶系列” 就正式完结了。
我们一起走过了很长的路:
- 我们扔掉了臃肿的
useEffect,学会了 React Query。 - 我们告别了卡顿的
onChange,拥抱了 React Hook Form。 - 我们不再手动算高度,用了 Virtual Scrolling。
- 我们为了 SEO 上了 Next.js SSR。
- 我们把前后端合体,用了 Server Actions。
- 最后,我们用 Vercel 把它推向了世界。
前端开发早就不是当年那个切图、写 jQuery 的时代了。 现在的我们,手握全栈的能力,掌握着构建大型应用的工程化思维。
代码写得再好,只有跑在用户的屏幕上,才是有价值的。
希望这一些列文章能帮你少踩几个坑,多省几小时加班时间。 我是大布布将军,咱们在下一个技术浪潮里,再见!
react全系列完。 既然都看到这了,不如把那个只有 README 的项目拿出来,Push 上去试试? Vibe浪潮下,安有完卵,前端之路何去何从?让我们拨开迷雾,勇者先行。 一个前端的后端亦或者一个后端的前端,如果您也感兴趣,关注一下,以防走失。