0Pricing
React Academy · 课时

多主题与多品牌令牌架构

通过分层结构组织令牌(基础、语义、组件),以支持浅色、深色及多个品牌主题

多主题与多品牌令牌架构 是 CoddyKit 上的免费 React Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 React Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 React Academy 课程共包含 4 节课。

主题与品牌

主题改变的是同一品牌的颜色模式(同一产品的浅色和深色版本)。品牌代表不同的视觉身份——使用不同的颜色、排版和间距来呈现同一设计系统的组件,以服务不同的产品或客户。两者使用相同的令牌架构,但处于不同的抽象层级。

原始令牌层

原始令牌是系统可用的全部原始值调色板。其中包括每个颜色级别(从 color-blue-50 到 color-blue-900)、每个间距单位和每个字号。组件不会直接使用原始令牌,它们只由语义令牌引用。调色板只定义一次,并由所有主题和品牌共享。

语义令牌层

语义令牌表达使用意图:color-background-page、color-text-primary、color-action-primary。每个语义令牌都会引用适合当前主题的原始令牌值。组件只基于语义令牌构建。这是主题切换发生的层。

浅色主题的语义映射

在浅色主题中:color-background-page 引用 color-white,color-text-primary 引用 color-gray-900,color-action-primary 引用 color-blue-500。这些映射定义在主题专用的令牌文件中,用于覆盖浅色环境下的语义层。

深色主题的语义映射

在深色主题中:color-background-page 引用 color-gray-950,color-text-primary 引用 color-gray-50,color-action-primary 引用 color-blue-400(为了在深色背景上获得足够对比度,该颜色稍亮一些)。只有语义映射会改变,原始调色板和所有组件都保持不变。

品牌覆盖

品牌 A 使用蓝色作为主色(color-action-primary: {color-blue-500})。品牌 B 使用绿色(color-action-primary: {color-green-500})。按钮组件读取 var(--color-action-primary),完全无需了解当前启用的是哪个品牌。品牌覆盖只改变语义令牌映射,从不修改组件代码。

运行时主题切换

CSS 自定义属性让运行时主题切换变得非常简单。将当前主题存储在数据属性中:document.documentElement.setAttribute('data-theme', 'dark')。CSS 规则会在 [data-theme="dark"] 选择器下覆盖语义令牌。浏览器会立即将所有 var() 引用解析为新值,无需 JavaScript 重新渲染。

构建时品牌主题

对于以独立部署形式提供的不同品牌,可以使用构建时主题:使用 Style Dictionary 为每个品牌生成单独的 CSS 令牌文件,并在应用启动时加载正确的品牌 CSS。当品牌在部署时确定(例如使用不同的域名、子域名或白标实例),而不是在用户交互时确定时,这种方法非常合适。

组合品牌与主题

多品牌、多主题系统需要一个二维矩阵:品牌 A 浅色、品牌 A 深色、品牌 B 浅色和品牌 B 深色。CSS 自定义属性通过嵌套选择器可以优雅地处理这种情况:[data-brand="a"][data-theme="dark"] 会为特定组合覆盖语义令牌。四种组合只需要四个 CSS 代码块,而不是四套代码库。

令牌版本管理与弃用

随着设计系统不断发展,令牌会被添加、重命名或移除。请将令牌与代码放在同一个仓库中进行版本管理。弃用某个令牌时,请在一个发布周期内保留旧名称,并将其作为指向新名称的别名;添加弃用注释,并更新使用这些令牌的代码。通过结构化的变更日志,在设计与工程团队之间协调令牌变更。

令牌治理:令牌归谁所有

治理规定谁可以添加或修改令牌,以及需要经过怎样的审查流程。原始令牌需要设计团队批准。语义令牌需要同时经过设计和工程团队的审查。组件令牌可以由组件所有者管理。如果没有这种治理,就会出现重复令牌,“单一事实来源”的保证也会失效。

语义令牌与原始令牌的区别

组件为什么应该引用语义令牌,而不是原始令牌?

课程回顾

主题会在同一品牌内切换色彩模式;品牌则代表不同的视觉标识。原始令牌是原始调色板,语义令牌表达含义并支持主题化。组件只使用语义令牌。暗色模式和品牌覆盖只会改变语义令牌映射,组件本身不变。运行时主题化使用带有 [data-theme] 选择器的 CSS 自定义属性;构建时品牌化则为每个品牌生成独立的 CSS。令牌治理和版本控制可以在系统不断演进时保持一致性。

常见问题解答

「多主题与多品牌令牌架构」课时是免费的吗?

是的 — 「多主题与多品牌令牌架构」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 React Academy 课程的其余内容,请升级到 CoddyKit PRO。 React Academy 课程共包含 4 节课。

「多主题与多品牌令牌架构」这节课中我会学到什么?

通过分层结构组织令牌(基础、语义、组件),以支持浅色、深色及多个品牌主题 你通过在浏览器中直接运行的动手代码来练习 React Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 React Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 React Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「多主题与多品牌令牌架构」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 React Academy 课中编写并运行代码吗?

能。每节 React Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 什么是设计令牌,以及它们为何重要
  2. Style Dictionary:转换与生成令牌
  3. Tailwind、CSS 变量与 CSS-in-JS 中的令牌
  4. 多主题与多品牌令牌架构
← 返回 React Academy