标题:“CSS 优先 + 轻量组件封装:一个 10KB 组件库的实践”
描述:“从 UnoCSS 回归原生 CSS,一种由设计令牌驱动的组件库解决方案。四层 CSS 架构、极简的 Vue 组件、打包体积分析以及可维护性对比,展示如何用 500 行代码构建一个 10KB 的组件库。”
标签:[Vue, CSS, 设计系统, 架构]
系列:Vue 3 组件库开发指南
从 UnoCSS 回归原生 CSS,一种由设计令牌驱动的组件库解决方案。
本文涵盖:四层 CSS 架构(颜色、布局、组件、主入口),Button.vue 的实现(无 <style> 块,约 50 行代码),打包体积与可维护性对比,以及一套极简的工具类集合(仅约 30 个类)。
一、回顾:第一篇文章的结论
在上一篇文章中,我分享了将现有设计令牌映射到 UnoCSS 的失败尝试。核心结论如下:
- 设计令牌是基础,原子化 CSS 只是一层外衣
- 强制映射只会增加维护成本,而没有实际收益
- 对于拥有成熟设计令牌的项目,原子化 CSS 并非必需品
那么,如果不使用原子化 CSS,组件库该如何编写?
本文将给出答案。
二、最终架构:四层 CSS 文件
整个样式系统分为四层,职责明确且依赖关系分层:
┌─────────────────────────────────────────────────────────────┐
│ 设计令牌层 (自动生成) │
│ ┌─────────────────────┐ ┌─────────────────────────────┐ │
│ │ colors.css │ │ layout.css │ │
│ │ 颜色令牌 │ │ 布局令牌 │ │
│ │ (40+ 变量) │ │ (间距/字体/动画) │ │
│ │ 【API 层】 │ │ │ │
│ └──────────┬──────────┘ └─────────────┬───────────────┘ │
│ └──────────────┬──────────────┘ │
│ ↓ │
│ 组件样式层 (手写) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ components/ │ │
│ │ 每个组件独立的 CSS 文件 │ │
│ │ (.mg-button, .mg-card, .mg-input...) │ │
│ │ 引用 var(--ui-*) 令牌 │ │
│ └──────────────────────────┬──────────────────────────┘ │
│ ↓ │
│ 入口层 (手写) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ main.css │ │
│ │ 导入令牌文件 + 组件文件 + 全局重置 │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
文件职责
| 文件/目录 | 职责
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
友情链接: 杭州电子商务研究院 企通社 epower企服引擎 二十二科技集团 第一商务 域名交易 爱名奖 LTD方法论 营销SaaS 22知协 .Co.Ltd数字门户 ToB总监联盟 网站编辑器 官微名片 丽水山泉 浙工大校友企业家联谊会 站点智能 DMP 西湖龙井茶官网 标诺网 欧朋不锈钢全屋定制 智元营销 港宏桥 更多
|
|---|