构建可扩展的 Vue 设计系统需分层解耦、统一设计语言、保障组件复用性与工程化协作,核心包括 Design Tokens 集中管理、原子化组件分层(Elements/Patterns/Views)、多主题支持及自动化文档与开发体验。

构建可扩展的 Vue 设计系统,核心在于分层解耦、统一设计语言、组件可复用性与工程化协作机制。它不是堆砌组件,而是建立一套可持续演进的体系。
设计标记(Design Tokens)集中管理
所有视觉变量——颜色、间距、字体、圆角、阴影——必须脱离具体组件,以机器可读格式(如 YAML 或 JSON)统一定义在 src/tokens/ 目录下。例如:
-
color.yml 定义语义化色值(
primary-500: "#e63946"),而非直接写死十六进制; -
spacing.yml 使用比例单位(
sm: "0.25rem", md: "1rem"),避免像素硬编码; - 通过工具(如 Style Dictionary 或自研脚本)自动同步到 Sass 变量、CSS 自定义属性、JS 运行时对象,确保跨技术栈一致性。
原子化组件体系分层组织
严格按原子设计原则组织目录结构,明确每层职责:
递归分析 Vue 项目组件依赖,从入口文件生成组件层级图,支持 Vue 2/3,输出组件名、文件路径和属性。适用于分析组件结构、排查依赖或了解项目架构。
-
基础组件(Elements):位于
src/elements/,如 Button、Input、Icon。只封装单一交互逻辑,样式完全依赖 Design Tokens; -
复合组件(Patterns):位于
src/patterns/,如 LoginForm、DataTable。由多个 Elements 组合而成,聚焦业务场景,不暴露底层样式细节; -
页面级视图(Views):位于
src/views/,仅负责路由入口与布局编排,不包含任何 UI 样式或交互逻辑。
样式与主题能力内建支持
样式系统需支持多主题切换与运行时定制:
立即学习“前端免费学习笔记(深入)”;
- 使用 Sass 的
@use和模块化函数(_functions.scss)处理响应式断点、颜色变体生成; - 将主题变量注入 CSS 自定义属性(
:root { --color-primary: var(--token-color-primary); }),使深色模式切换只需切换 class 或 data 属性; - Vue 组件通过
computed或 Composition API 中的useThemeHook 读取当前主题值,避免硬编码。
文档与开发体验自动化
设计系统的生命力取决于被真正使用,因此必须降低接入门槛:
- 每个组件配套 Markdown 文档(
__demo__/目录),含代码示例、Props 表、事件说明、无障碍支持备注; - 集成 Storybook 或 VitePress,实现组件实时预览、API 自动生成、主题切换演示;
- 提供 CLI 工具(如
vue-ds create component Card)一键生成标准目录结构与模板文件,强制规范落地。

















