下个时代的组件库
这一节讨论的不是“再做一个更大的 UI 库”,而是一个更根本的问题:
下一代组件库,应该继续把交互、样式、主题和工程约束都捆在一起吗?
越来越多团队给出的答案是:不一定。
一个越来越清晰的方向
更现代的组件库设计,往往会把这些职责拆开:
- 用 Headless / Primitive 组件承载交互行为
- 用 Design Tokens / CSS Variables 承载主题系统
- 把最终视觉表达尽量留给应用侧
也就是说,组件库不再只是一套“预制外观组件”,而更像一套:
- 行为原语
- 结构原语
- 可组合约束
为什么这条路线重要
传统“大而全”组件库很容易在复杂业务里遇到这些问题:
- 样式覆盖成本越来越高
- 设计系统演进时阻力很大
- 某些组件交互合适,但 DOM 结构和视觉表达不够灵活
而把交互和样式拆开之后,会更容易做到:
- 交互能力复用
- 样式完全按业务设计系统控制
- 减少“为了改样式而对抗组件库内部结构”的维护成本
这条路线通常长什么样
更现代的方案通常会强调:
- Headless / Primitive 组件只负责行为和可访问性
- 视觉层交给 Tailwind、CSS Variables、CSS Layers 或自研样式系统
- 组件库作者提供的是“可组合能力”,而不是“最终品牌皮肤”
这类思路在 React 生态的 shadcn/ui、radix-ui,以及 Vue 生态里的一些 headless 方案上都能看到。
它不一定适合所有团队
这条路线更适合:
- 有明确设计系统的团队
- 样式定制需求很强的团队
- 能接受更高组件抽象度和工程复杂度的团队
如果团队更看重:
- 开箱即用
- 统一默认视觉
- 尽快落地
那传统组件库仍然很有价值。
推荐阅读顺序
建议按这条路径看:
- 先读 组件的使用
- 再回看 组件的构建
- 最后把这一节和 element-plus (vue3) 构建分析 对照着看
这样你会更容易理解:
- 传统组件库解决了什么
- Headless / Primitive 路线又是在解决什么
一句话理解
“下个时代的组件库”不是简单做更多组件,而是重新拆分组件库应该承担的职责边界,让交互、样式和主题系统不再强绑定。