v0 与 Lovable
这一课你将能做到
- 用 v0 从文字描述生成可用的 React + Tailwind UI 组件
- 用 Lovable 这类工具生成全栈应用骨架并正确接管代码
- 判断「AI 生成 UI」的产出哪些能直接用、哪些必须重写
为什么要学
前端 UI 是 AI 生成效果最惊艳的领域:截个图或写句话,几十秒后一个能跑的页面就出来了。v0(Vercel 出品)生成 React + Tailwind + shadcn/ui 组件,Lovable、Bolt 这类工具更进一步,直接生成带后端的全栈应用。
人话:这类工具把「从设计稿到页面」的成本从按天算压到按分钟算。但它们的产出有个共同特点:看起来完成度 95%,实际能进生产的只有 60%——无障碍、边界状态、错误处理、和你项目的集成方式,都是要手工补的课。
对后端开发者价值尤其大:以前给管理后台画个界面要求人,现在自己描述需求直接生成,改改就能用。
先建立图像
AI 生成 UI 的现实期望值:
┌────────────────────────────────┐
│ AI 直接能给你的: │
│ ✓ 布局结构、视觉风格 │
│ ✓ 响应式骨架 │
│ ✓ 组件拆分雏形 │
├────────────────────────────────┤
│ 你必须自己补的: │
│ ✗ 真实数据接入 │
│ ✗ 加载/空/错误状态 │
│ ✗ 表单校验逻辑 │
│ ✗ 权限与交互细节 │
│ ✗ 和你项目设计系统的统一 │
└────────────────────────────────┘
跟着做
步骤 1:用 v0 生成一个真实需要的组件
打开 v0.dev,别用「做一个好看的落地页」这种练习需求,用你项目里真实需要的界面:
生成一个文章管理后台的列表页:
- 顶部:搜索框 + 标签筛选下拉 + 「新建文章」按钮
- 中间:表格,列有 标题/标签/状态/创建时间/操作(编辑、置顶、删除)
- 表格行内状态用徽章区分:草稿(灰)、已发布(绿)
- 底部:分页器
- 用 shadcn/ui 组件,风格简洁专业
要点:描述结构(区域划分)+ 数据(列和字段)+ 状态(徽章颜色)+ 技术约束(shadcn/ui),四要素齐全,产出质量高一档。
步骤 2:迭代修正
第一版出来通常 70 分。针对性迭代:
修改:
1. 表格操作列的按钮改成图标 + tooltip,不要文字按钮
2. 加一个「加载中」骨架屏状态
3. 加一个「无数据」空状态,配一句话引导用户新建
每轮只改 2-3 个点,一次说十条改动 AI 容易顾此失彼。
步骤 3:导出代码并接管
v0 生成的代码可以复制或一键集成到 Next.js 项目。接管后的标准动作:
- 读一遍:确认组件拆分合理(一个页面是否被拆成了可复用的子组件)
- 抽离假数据:生成代码里的 mock 数组改成 props 或 API 调用
- 统一风格:把它的颜色、间距类名换成你项目设计系统的约定
- 补状态:loading / empty / error 三态补齐
// AI 给的:假数据写死
const articles = [{ id: 1, title: "示例" }];
// 你改成:真实数据源
const { data: articles, isLoading, error } = useArticles(filters);
if (isLoading) return <TableSkeleton />;
if (error) return <ErrorState retry={refetch} />;
if (!articles?.length) return <EmptyState />;
步骤 4:用 Lovable 生成全栈骨架
打开 lovable.dev,描述一个完整小应用:
一个极简的链接收藏应用:
- 提交 URL 自动抓取标题(可以用 Edge Function 模拟)
- 标签分类、列表展示
- Supabase 做数据库和认证
- 页面:登录页、列表页
Lovable 会生成 React 前端 + Supabase 后端的完整工程,还能连接 GitHub 同步代码、一键部署。
步骤 5:评估产出,决定接管策略
全栈生成物的接管检查清单:
- 数据库表结构是否合理(字段类型、索引、外键)
- RLS(行级安全)策略是否配置——这步被跳过等于数据裸奔
- 前端状态管理是否和你项目方案一致
- 依赖版本是否过旧
建议策略:用生成物当「可运行的高保真原型」,核心业务代码按你的架构重写,UI 和基础 CRUD 保留。
讲清楚要点
- 描述质量决定产出质量:结构+数据+状态+技术约束四要素,比「好看一点」「专业一点」这类虚词有效十倍。
- 迭代要小幅多次:每轮 2-3 个修改点,改完确认再下一轮。一次十条修改,AI 会悄悄丢掉五条。
- 生成的 UI 是「初稿」不是「成品」:三态(loading/empty/error)、表单校验、无障碍,默认都没有,接管时按清单补齐。
- 全栈生成物的价值在骨架:认证流程、页面路由、基础 CRUD 这些「每个项目都差不多」的部分直接用;核心业务逻辑按自己标准来。
- 技术栈锁定要看清:v0 绑 React+Tailwind+shadcn,Lovable 绑 React+Supabase。你的项目是 Vue + Element?这类工具的产出只能当视觉参考,不能当代码起点。
你可能会懵的地方
-
生成的组件能直接用在我的 Vue/Angular 项目里吗? 不能直接搬。可以让 v0 生成后,把结构和样式「翻译」成你的技术栈(这步可以再让 AI 做),但别指望零成本跨栈。
-
v0 和直接用 ChatGPT/Claude 写组件有什么区别? v0 有实时预览、组件库特化(shadcn/ui 训练充分)、和 Vercel 部署打通。纯视觉组件迭代效率明显更高;复杂交互逻辑两者差别不大。
-
Lovable 生成的应用能直接上线吗? 内部工具、MVP 验证可以。面向真实用户的商业产品:安全策略(Supabase RLS)、错误处理、性能,都需要专业审查。「能跑」和「能上」之间隔着一次完整的工程化。
-
设计稿转代码和文字转代码哪个效果好? 设计稿(截图/Figma)还原度高,因为有精确视觉参考;文字描述自由度高但随机性大。有稿喂稿,没稿就先把四要素写细。
-
AI 生成的 UI 会不会都长一个样? 会趋同(都是 Tailwind 默认美学)。解法:在提示词里给具体的设计参照(「参照 Linear 的列表页密度和配色」),或生成后用你的设计 token 系统统一替换。
错法对照
| 错法 | 问题 | 正解 |
|---|---|---|
| 「做个好看的页面」 | 无从判断的虚需求 | 结构+数据+状态+约束四要素描述 |
| 一轮要十条修改 | AI 顾此失彼,越改越乱 | 每轮 2-3 点,确认后迭代 |
| mock 数据直接进生产 | 假数据上线 | 接管第一步就是接真实 API |
| 忽略 loading/empty/error | 用户看到白屏或报错 | 三态是接管的必做清单 |
| 跳过 Supabase RLS 配置 | 数据可被越权读写 | 上线前逐表检查安全策略 |
卡点急救
- 改了很多轮越改越差:版本回退。v0/Lovable 都有历史版本,回到质量最高的一版,换个描述角度重新迭代。
- 生成代码里用了你不想要的库:提示词里明确禁用(「只用项目已有依赖,不要引入新包」),并在接管时检查 package.json 变动。
- 跨技术栈搬运:让 AI 做翻译层——「把这个 React+Tailwind 组件转成 Vue 3 + Element Plus,保持结构和视觉一致」,再人工修细节。
面试常问
-
你怎么评价 AI 生成 UI 工具对前端岗位的影响? 高分回答:消灭的是「把设计稿翻译成代码」的重复劳动,放大的是「设计系统建设、交互细节、状态完备性、性能」的价值;前端工程师的产出单位从「页面数」变成「可维护的组件资产」。
-
用 Lovable 这类工具做的 MVP 要上线了,你的工程化清单是什么? 安全(RLS/鉴权/输入校验)、错误处理与三态、依赖审计、环境配置分离(密钥不入库)、监控告警、回滚方案。逐条过,不打折扣。
-
生成代码和项目现有代码风格不一致怎么处理? 短期:接管时用格式化工具+lint 规则统一;长期:把项目的设计 token 和组件约定整理成文档,作为生成时的提示词一部分,从源头对齐。
自测三问
- 描述 UI 需求的「四要素」是什么?
- 接管 AI 生成的全栈应用时,安全检查清单里哪一项最容易被忽略且后果最严重?
- 为什么建议把全栈生成物定位为「可运行的高保真原型」而不是「待上线的产品」?
小结一句话
v0 和 Lovable 把 UI 的起点从空白画布变成了 70 分初稿——你的工作是接管、补三态、换真数据、守安全线。
延伸
- v0 官方文档
- Lovable 官方文档
- Supabase RLS 文档(全栈生成物安全必读)
- 下一课:技术栈选择——AI 时代什么样的技术栈最「AI 友好」。