为什么要自建组件库
项目一做大,每个页面都自己写按钮、卡片、弹窗,很快就会出现:同一个按钮十个颜色、同一个弹窗三种间距。自建一套组件库,就是把这些反复出现的界面元素收敛成统一的、可配置的组件。
自建不代表从零造轮子。可以在开源组件库基础上改,也可以只沉淀自己项目高频用到的那十几个组件。关键是「统一」,不是「全」。
当然,也别为了组件库而组件库。页面量小、改动又快的项目,硬套一套组件库反而拖慢节奏,按需收敛就好。
组件库的价值,是让十个页面看起来像同一个产品。
自建组件库不是大项目的专利。哪怕是三两个人的小项目,把按钮、弹窗、表单这几个高频件统一一下,后面改版都能省一半时间。
- 设计 token颜色、字号、圆角先定成变量。
- 自建组件用 properties 让组件可配置。
- 主题定制一套皮肤变量,全站换色。
- 落地设计稿的规范要能对得上代码。
设计规范:先定 token 再写组件
写组件之前,先把最基础的设计 token 定下来:主色、辅助色、文字字号、圆角、间距。后面所有组件都引用这套 token,而不是各处写死数值。
| token | 作用 |
|---|---|
| 颜色 | 主色、成功、警告、危险统一 |
| 字号 | 标题、正文、辅助文字分级 |
| 圆角/间距 | 统一卡片和按钮的观感 |
/* 把 token 放到全局样式,组件里引用 */
:root {
--brand: #1E5FA8;
--radius: 12rpx;
}
token 不用一上来就定全套。先把主色、两种字号、一个圆角定下来跑起来,用着用着缺什么再补。想一次定完美,往往定不下来。
自建组件:可复用、可配置
小程序自定义组件通过 properties 接收外部参数。一个好的组件,长得像不像由外部配置决定,内部只管布局和交互。
Component({
properties: {
type: { type: String, value: "primary" },
text: { type: String, value: "按钮" }
}
});
组件别堆太多冷门功能。只做项目里真的会用到的那几种形态,用不上的先别加。
组件的事件也要设计好:对外只抛清晰的事件名,把内部细节藏住。外面用组件的人,不需要知道你内部怎么实现的。
这样组件才能在不同页面里放心复用,而不用担心一处改动牵动全身。
主题定制:一套皮肤多处用
因为颜色、圆角都走 token,换主题本质就是换一套 token。深色模式、品牌换色,改的是变量,不是每个组件逐个改样式。
- token 集中在一处,全站引用。
- 深色模式只切一套变量。
- 别在组件里硬写颜色。
主题切换时,别忘记动效和图片。有些插画在深色背景下会发灰,换主题时要一起过一遍视觉,不能只切颜色就完事。
落地:从设计稿到代码
组件库要真能用,设计稿和代码得对得上。设计师给的标注里的颜色、字号,最好就是你定的那套 token,别设计一套、代码另一套。
// 设计稿用的色值,和代码 token 保持一致
// 对不上的地方先统一,再开工
做一个组件展示页,把所有组件各种状态摆出来,团队照着用,省得口口相传。
如果团队有设计稿工具,最好把 token 同步成设计工具里的变量。设计师改色,代码那边也能跟着改,两边不脱节。
另外,给组件配好默认值。外部不传参数时,组件也该有个合理的默认长相,这样接入才轻。
常见组件库坑
| 坑 | 后果 | 应对 |
|---|---|---|
| 组件硬写颜色 | 换主题全得改 | 统一走 token |
| 组件功能堆太多 | 难维护 | 只做高频形态 |
| 设计与代码两套标准 | 对不上 | 共用一套 token |
组件还得有版本意识。改一个已有组件的行为,可能悄悄影响所有用到它的页面。改完要全局过一遍,别只测了一个地方。
组件库落地清单
- 先定颜色、字号、圆角、间距 token。
- 高频界面元素收敛成可配置组件。
- 换主题只切变量,不改组件内部。
- 做一个组件展示页供团队参考。
- 设计稿和代码共用同一套 token。
组件库做到「长得像同一个产品」,就值了。
最后,组件库是给人用的。文档和示例写清楚,比组件本身多做一个功能更重要。没人会用的组件库,等于白建。