冷行
冷行
发布于 2026-10-09 / 3 阅读
0
0

AI 写的页面为什么都长一个样:12 个组件库选型与设计约束实战

你让 AI 做一个页面,它三分钟交活。打开浏览器:渐变背景、圆角卡片、三栏「我们的优势」——全都眼熟。

你说"高级一点"。它改了半天,你刷新一看:蓝色换成了紫色。

这个循环我重复过很多次,后来才想明白:问题不在提示词,而在我从没告诉过它什么是"高级"。没有约束的生成器只会输出训练数据的平均值——而设计的平均值,正好是最平庸的那一档。

这篇讲两件事:选哪个组件库,以及怎么把"好看"变成 AI 能执行的约束。

一、为什么 AI 做出来的页面都长一个样

先别急着怪模型没品味。它的输出本质是概率采样:在给定上下文里挑"最像正确答案"的样式——取决于训练数据长什么样。

三个因素叠加,结果被锁死:

  • 训练数据本身高度同质。 能被大量抓取的页面多是模板化 SaaS 官网与后台界面,个人风格站点占比极小。

  • 对齐过程进一步收窄。 偏好训练奖励"人类普遍觉得还不错"的输出,其数学含义就是中庸——风格越鲜明越不易被奖励。

  • 默认值会自我强化。 AI 的产出又被喂回下一版训练集:同一种配色版式被复制越多,被采样概率越高。

所以模型不是不懂审美,它的审美等于平均审美。想要非平均的结果,唯一办法是给它非平均的约束。

这就是组件库在 AI 时代的新角色:它不是省时间的工具,而是一份能被机器读取的设计契约。

二、12 个组件库,按「控制权」分三组

清单好找,难的是选。我只用一个维度——代码控制权在谁手里。比"谁更火"更有用,直接决定你后期改得动不动。

一句话选型:追求极致可控走第一组,需要开箱即用走第二组,想要视觉冲击额外挂第三组。

组一:完全掌控型 —— 组件源码进你的仓库

库

链接

定位

shadcn/ui

https://github.com/shadcn-ui/ui

Radix UI + Tailwind CSS。不是传统组件库,而是复制进你项目的组件源码,随便改,无黑盒

Radix UI

https://github.com/radix-ui/primitives

无样式原语之王,shadcn/ui 的底层。高度可访问、零样式

Headless UI

https://github.com/tailwindlabs/headlessui

Tailwind 团队官方出品,完全无样式的可访问性组件

这三个是"我给零件、你装机"的路子。自由度最高,代价是视觉自己负责。

组二:开箱即用型 —— 装完就有好看的默认样式

库

链接

定位与适合场景

Ant Design

https://github.com/ant-design/ant-design

阿里出品,中后台默认答案,表单表格能力极强

Material UI

https://github.com/mui/material-ui

Material Design 官方 React 实现,组件多、生态完善,MUI X 提供高级表格与图表

Mantine

https://github.com/mantinedev/mantine

功能最全面,自带 Hooks、表单、通知、图表,TS 支持一流

HeroUI

https://github.com/heroui-inc/heroui

原 NextUI,React Aria + Tailwind,动画流畅,界面天然好看

Chakra UI

https://github.com/chakra-ui/chakra-ui

props 控样式,开发体验极佳,v3 后更现代

daisyUI

https://github.com/saadeghi/daisyui

纯 Tailwind 插件,class 直接出漂亮组件,一键切换主题

React Bootstrap

https://github.com/react-bootstrap/react-bootstrap

元老级,成熟稳定、文档齐全,Bootstrap 团队迁移成本极低

Fluent UI

https://github.com/microsoft/fluentui

微软官方,与 Microsoft 生态结合紧密

组三:视觉增强型 —— 专治"不好看"

库

链接

定位

React Bits

https://github.com/DavidHDev/react-bits

专收动画、交互和 3D 效果组件,是"wow 感"落地页最热的选择之一;不解决工程问题,只解决视觉冲击,适合叠加在前两组之上而非替代

三、选型前先回答三个问题

分组只是第一层筛选,落地还要回答三个问题:

  1. 代码最终归谁维护? "我还要长期改"就往组一靠;只快速交付,组二更划算。

  2. 界面是数据密集还是展示驱动? 表格、筛选、批量操作直接看 Ant Design 和 MUI,打磨程度别的库比不了;落地页、官网这类展示场景才轮到 HeroUI 和 React Bits。

  3. 用户在国内还是海外? 这点最常被忽略。Ant Design 中文社区国内最好;面向海外或国际化时,MUI、Fluent UI 更稳。

顺带纠正一个误解:daisyUI 和 shadcn/ui 不是竞品。 一个是"安装即用"的有样式方案,一个是"复制即拥有"的无主方案。常见组合:daisyUI 搭骨架,关键页换 shadcn/ui 精修。

四、组件库没告诉你的三件事

第一,它保证下限,不保证上限。 可访问性、响应式、焦点管理这些苦活它替你干了——手搓三天,抄它三分钟。但从"不难看"到"好看"那段路,只能靠设计规范走。

第二,它自己也会被 AI 污染。 shadcn/ui 那套默认主题——zinc 中性灰、rounded-lg、一层几乎看不见的边框——本是极好的中性起点,却因太好用被满地的 AI 页面戴成了新的模板脸。让 AI 直接吃默认配置,你得到的不是"干净",是"千篇一律的高级灰"。

第三,它的身份变了。 组件库天然携带一整套决策:间距阶梯、字号排比、状态表达、层级底色。在 AI 流程里,这等于把隐性共识显性化——AI 读到它就知道边界在哪。工具会过时,契约会留下。

五、把"高级一点"翻译成约束

做法是把设计决策固化成一个文件,让 AI 每次开工前必读。

# 设计契约(AI 开工前必读)

## 视觉基调
冷峻、工程感、克制。参考 Linear / Vercel Dashboard / Stripe Docs。
明确禁止:蓝紫渐变、霓虹色、玻璃拟态、发光阴影、emoji 图标、
大圆角卡片堆叠、三栏并列的"我们的优势"式排版。

## 色彩
- 主色仅用于强调,单屏占比不超过 5%
- 中性色阶:墨黑 → 石板灰 → 白,共 7 级,全站只用这一套
- 语义色(成功/警告/危险)各一个固定值,禁止自定义新色

## 排版
- 字号阶梯:12 / 13 / 14 / 16 / 20 / 28 / 40,只允许取这 7 个值
- 行高:正文 1.6,标题 1.2
- 字重只用 400 / 500 / 600

## 形状与层次
- 圆角:3px(控件)/ 6px(面板),全站两档
- 层次靠 1px 边框和背景色差表达,不靠阴影

## 交互
- 所有 hover 150ms ease-out
- 所有可点元素必须有 focus-visible 样式

核心逻辑只有一句:把"高级一点"这种形容词,换成 AI 能逐条验证的约束。 形容词无法检查,token 可以。

这份文件真正的价值在于它可被验证。AI 交稿后逐条对照:字号是不是只用了那 7 个值?有没有蓝紫渐变?能对照就能纠偏;只凭感觉,就永远在"蓝色改紫色"里打转。

六、行动建议

  1. 先写契约,再让 AI 写代码。 没有契约就开工,等于让它自由发挥到平均值。

  2. 按"控制权"选库,不按热度选库。 要完全掌控就 shadcn/ui + Radix UI,要快速交付就 Ant Design 或 Mantine,要视觉冲击额外挂 React Bits。

  3. 接入第一天就改默认主题。 把中性色阶、圆角、字重三处覆写成自己的 token。不改,你只是在复刻别人的默认值。

  4. 让 AI 复述约束再动手。 复述不出你的禁用清单,说明契约没进上下文。

  5. 别指望模型有品味。 它只有统计,判断这一步得你自己来。


回到开头那个循环。"高级"不是一种感觉,而是一组可以被写下来的规则。 规则越具体,AI 就越难给你平均值。库会换、热门会变,但你写进契约里的禁用项和那组 token,约束的不是某一次输出,而是之后所有的输出。


评论