附录 A:Tailwind 全类名一览表

本附录将 Tailwind 所有常用原子类分为 20 大类并深度扩写,覆盖设计系统定制、暗色模式切换、@layer/@apply 组件库构建、PostCSS 插件生态及 Tailwind v4 前瞻,同时完整保留全部类名速查手册。

本附录是 Tailwind CSS 的「终极速查手册 + 深度进阶」二合一文档。前半部分为五个新增的深度技术章节,后半部分将原有全部 20 个类名分类(A.1–A.20)折叠保留,随时可作为日常开发速查入口。


一、Tailwind 设计系统与 Design Token 定制

真实企业项目往往不会直接使用 Tailwind 默认配色,而是需要把品牌视觉系统翻译成一套可维护的 Design Token。Tailwind 的配置层本质就是「设计系统即代码」。

1.1 核心配置文件结构

tailwind.config.js 是连接设计规范与实现代码的唯一入口:

// tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    './src/**/*.{js,ts,jsx,tsx,vue,html}',
    './index.html',
  ],
  theme: {
    extend: {
      colors: {
        brand: {
          50:  '#eff6ff',
          100: '#dbeafe',
          500: '#3b82f6',
          600: '#2563eb',
          900: '#1e3a8a',
        },
        surface: {
          DEFAULT: '#ffffff',
          elevated: '#fafafa',
        },
      },
      fontFamily: {
        sans: ['Inter', 'system-ui', 'sans-serif'],
        mono: ['JetBrains Mono', 'monospace'],
      },
      fontSize: {
        '2xs': ['0.625rem', { lineHeight: '0.875rem' }],
      },
      spacing: {
        4.5: '1.125rem',
        13: '3.25rem',
      },
      borderRadius: {
        '2xl': '1rem',
      },
      boxShadow: {
        'card': '0 4px 12px rgba(0, 0, 0, 0.08)',
        'card-hover': '0 8px 24px rgba(0, 0, 0, 0.12)',
      },
      animation: {
        'fade-in': 'fadeIn 0.3s ease-out',
      },
      keyframes: {
        fadeIn: {
          '0%': { opacity: '0', transform: 'translateY(4px)' },
          '100%': { opacity: '1', transform: 'translateY(0)' },
        },
      },
    },
  },
  plugins: [
    require('@tailwindcss/typography'),
    require('@tailwindcss/forms'),
  ],
}

上例展示了品牌色 brand-50 到 brand-900 的完整 token 映射。通过 extend 而非直接覆盖,可以保留 Tailwind 全部默认色系的同时增量叠加。项目中可直接写出 text-brand-500、bg-brand-50,与设计稿 Figma Token 一一对应。

1.2 CSS 变量与 Tailwind 的联动映射

更工程化的做法是将 Design Token 定义为原生 CSS 变量,然后在 tailwind.config.js 中引用:

/* src/styles/tokens.css */
:root {
  --color-brand-500: #3b82f6;
  --color-brand-600: #2563eb;
  --color-surface: #ffffff;
  --color-text-primary: #111827;
  --radius-card: 0.75rem;
  --shadow-card: 0 4px 12px rgba(0, 0, 0, 0.08);
}
// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        brand: {
          500: 'var(--color-brand-500)',
          600: 'var(--color-brand-600)',
        },
        surface: 'var(--color-surface)',
        'text-primary': 'var(--color-text-primary)',
      },
      borderRadius: {
        card: 'var(--radius-card)',
      },
      boxShadow: {
        card: 'var(--shadow-card)',
      },
    },
  },
}

这种方式的优势在于:

  • 设计师可以直接修改 CSS 变量值,无需重新构建 Tailwind。
  • 运行时主题切换(如暗色模式)只需修改变量,Tailwind 类名无需变动。
  • 便于跨项目共享同一套 token 文件,甚至发成 npm 包供多个子项目消费。

关于暗色模式的实践,请参阅下一节「暗色模式与 CSS 变量结合实现主题切换」。

1.3 设计系统落地的执行流程

  1. 与设计团队协作,将 Figma / Sketch 的颜色、字号、间距提取为变量表。
  2. 在 tokens.css 中定义全部 CSS 变量,按语义命名(--color-surface、--color-text-primary 优于 --color-white、--color-black)。
  3. 在 tailwind.config.js 中将变量映射成 Tailwind 的 colors、fontSize、spacing 等扩展。
  4. 组件开发时全部使用 Tailwind 原子类,而非直接写 color: var(...),保持原子化一致性。
  5. 通过 shadcn/ui 组件库实践 ,将 token 落地为可复用的 Button / Card / Dialog 等组件。

二、暗色模式 darkMode: ‘class’ 与 CSS 变量结合实现主题切换

Tailwind 内置的暗色模式策略有两种:media(根据系统偏好)与 class(手动控制)。企业级产品通常选择 class 策略,因为需要支持「跟随系统 / 强制亮色 / 强制暗色」三种状态。

2.1 配置开启 class 策略

// tailwind.config.js
module.exports = {
  darkMode: 'class',
  // ...
}

启用后,所有带 dark: 前缀的类名(如 dark:bg-gray-900 dark:text-white)只会在祖先元素存在 .dark 类时生效。

2.2 CSS 变量驱动的双色主题

在 Tailwind v3 中,推荐将暗色配色全部映射到 CSS 变量:

/* tokens.css */
:root {
  --bg-primary: #ffffff;
  --bg-secondary: #f3f4f6;
  --text-primary: #111827;
  --text-secondary: #6b7280;
  --border-color: #e5e7eb;
}

.dark {
  --bg-primary: #0f172a;
  --bg-secondary: #1e293b;
  --text-primary: #f8fafc;
  --text-secondary: #94a3b8;
  --border-color: #334155;
}
<!-- HTML -->
<html class="dark">
  <body class="bg-[var(--bg-primary)] text-[var(--text-primary)]">
    <div class="border border-[var(--border-color)] rounded-lg p-4">
      <p class="text-[var(--text-secondary)]">暗色模式已开启</p>
    </div>
  </body>
</html>

2.3 存储与恢复用户主题偏好

// theme.ts
const THEME_KEY = 'app-theme'

type Theme = 'light' | 'dark' | 'system'

export function getTheme(): Theme {
  return (localStorage.getItem(THEME_KEY) as Theme) || 'system'
}

export function setTheme(theme: Theme) {
  const root = document.documentElement
  if (theme === 'dark') {
    root.classList.add('dark')
  } else if (theme === 'light') {
    root.classList.remove('dark')
  } else {
    const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches
    prefersDark ? root.classList.add('dark') : root.classList.remove('dark')
  }
  localStorage.setItem(THEME_KEY, theme)
}

// 初始化
setTheme(getTheme())

// 监听系统变化
window.matchMedia('(prefers-color-scheme: dark)')
  .addEventListener('change', () => {
    if (getTheme() === 'system') setTheme('system')
  })

2.4 与 shadcn/ui 语义色结合

shadcn/ui 使用 bg-background、text-foreground、border-border 等语义 token,本质上也是 CSS 变量的封装。将上述变量体系嵌入 shadcn 的 CSS 变量定义后,整套组件库(Button、Card、Input、Dialog)都可以无感知地响应主题切换。

更多组件封装细节请参考 附录 B:Tailwind + shadcn/ui 最佳实践 与 附录 C:Tailwind CSS 速查表 。


三、@layer @apply 构建组件库原子类组合(Button / Card / Modal 实战)

虽然 Tailwind 推荐「Utility First」,但在企业级中后台场景下,反复书写相同的 8–12 个类名既不高效也容易遗漏。@layer 与 @apply 正是解决这一矛盾的官方方案。

3.1 @apply 的基本用法

/* src/styles/components.css */
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer components {
  .btn {
    @apply inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors;
  }

  .btn-primary {
    @apply btn bg-brand-500 text-white hover:bg-brand-600 focus-visible:ring-2 focus-visible:ring-brand-500 focus-visible:ring-offset-2;
  }

  .btn-secondary {
    @apply btn bg-white text-gray-700 border border-gray-300 hover:bg-gray-50;
  }

  .btn-danger {
    @apply btn bg-red-600 text-white hover:bg-red-700;
  }
}

3.2 @layer 的意义

Tailwind 的 CSS 输出分为三层:base(重置)、components(组件)、utilities(原子工具)。使用 @layer components 确保自定义组件的优先级低于 @layer utilities,这意味着后续在 JSX 中覆盖 btn-primary 时,className="ml-4 mt-2" 仍然能正确生效——这是不使用裸 CSS 类时经常遇到的优先级问题。

3.3 Card 组件实战

@layer components {
  .card {
    @apply rounded-xl border bg-white shadow-sm transition-shadow;
  }

  .card-hover:hover {
    @apply shadow-md;
  }

  .card-header {
    @apply flex flex-col space-y-1.5 p-6 border-b;
  }

  .card-title {
    @apply text-lg font-semibold leading-none tracking-tight;
  }

  .card-body {
    @apply p-6;
  }

  .card-footer {
    @apply flex items-center justify-end gap-2 p-6 border-t;
  }
}

3.4 Modal(Dialog)浮层实战

@layer components {
  .modal-overlay {
    @apply fixed inset-0 bg-black/40 backdrop-blur-sm transition-opacity;
  }

  .modal-content {
    @apply fixed left-1/2 top-1/2 z-50 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 rounded-xl border bg-white p-6 shadow-lg outline-none;
  }

  .modal-header {
    @apply space-y-1.5 mb-4;
  }

  .modal-title {
    @apply text-lg font-semibold leading-none tracking-tight;
  }

  .modal-footer {
    @apply mt-6 flex items-center justify-end gap-2;
  }
}
<!-- 使用示例 -->
<div class="modal-overlay"></div>
<div class="modal-content" role="dialog">
  <div class="modal-header">
    <h2 class="modal-title">确认删除</h2>
    <p class="text-sm text-gray-500">此操作不可撤销,请谨慎。</p>
  </div>
  <div class="modal-footer">
    <button class="btn-secondary">取消</button>
    <button class="btn-danger">确认删除</button>
  </div>
</div>

3.5 何时使用 @apply,何时用 cn()/clsx()

  • @apply 场景:项目中存在大量重复基础 UI(中后台表单、表格、卡片),且样式差异主要是「有无边框 / 有无阴影」等固定变体。
  • cn()/clsx() 场景:组件状态复杂(loading、disabled、多 variant)、需要条件渲染类名,或构建通用开源 UI 库(如 shadcn/ui)。

对于 Vue / React 项目,更多时候推荐将上述 @apply 组件进一步封装为 Vue SFC 或 React 组件,配合 cn() 函数管理条件类名。关于 React 组件化方案,请参阅 React 专题 ;关于 Vue 组合式组件封装,可参阅 Vue 状态管理完全指南 。


四、Tailwind + PostCSS 插件生态

Tailwind 本身是一个 PostCSS 插件,其生态建立在 PostCSS 之上。以下是生产环境中高频使用的四个官方/半官方插件。

4.1 @tailwindcss/typography — 排版美化

长文内容(博客、文档、帮助中心)通常来自 Markdown / CMS,内容结构不完全可控。typography 插件为容器添加 prose 类,即可自动美化内部的 h1–h6、p、ul、blockquote、pre > code:

<article class="prose prose-slate md:prose-lg dark:prose-invert">
  <!-- 这里的 HTML/Markdown 渲染结果会自动排版 -->
  <h1>文章标题</h1>
  <p>正文段落……</p>
  <blockquote>引用内容</blockquote>
</article>
// tailwind.config.js
module.exports = {
  plugins: [require('@tailwindcss/typography')],
}

prose-invert 配合暗色模式使用,md:prose-lg 实现响应式字号缩放。对于技术文档站来说,这是「零样式侵入」排版的最优解。

4.2 @tailwindcss/forms — 表单元素重置

浏览器默认的 <input>、<select>、<textarea> 样式差异巨大,forms 插件提供统一的、可定制的基础样式:

// tailwind.config.js
module.exports = {
  plugins: [require('@tailwindcss/forms')],
}
<input type="text" class="form-input rounded-lg border-gray-300" />
<select class="form-select rounded-lg border-gray-300"></select>
<textarea class="form-textarea rounded-lg border-gray-300"></textarea>

核心优势:保留浏览器默认的 focus ring、无障碍支持,同时外观高度统一,无需手写 appearance: none;。

4.3 @tailwindcss/container-queries — 容器查询

响应式并非只看视口宽度,有时需要按「组件容器宽度」判断。@tailwindcss/container-queries 插件将 CSS Container Queries 包装成 Tailwind 语法:

<div class="@container">
  <div class="grid grid-cols-1 @md:grid-cols-2 @lg:grid-cols-3 gap-4">
    <div class="card">Item 1</div>
    <div class="card">Item 2</div>
    <div class="card">Item 3</div>
  </div>
</div>

这里的 @md: 不是指视口 ≥ 768px,而是指 .@container 这个容器本身宽度达到该阈值。这对于「侧边栏可折叠的仪表盘布局」极为关键。

4.4 @tailwindcss/line-clamp — 文本截断

<p class="line-clamp-3">
  这是一段很长的文本,超过三行后尾部会自动显示省略号,无需手动计算高度或使用 JavaScript。
</p>

注意:Tailwind v3.3+ 已将 line-clamp 合并入核心,无需额外安装插件。


五、Tailwind v4 新增语法 Preview(@theme, CSS-first configuration)

Tailwind v4 是当前社区关注的核心版本,其最大变化是将配置从 JS (tailwind.config.js) 迁移到 CSS (@theme)。这带来更少的构建依赖和更直接的开发体验。

5.1 不再需要 tailwind.config.js

/* styles.css —— Tailwind v4 */
@import "tailwindcss";

@theme {
  --color-brand-50: #eff6ff;
  --color-brand-500: #3b82f6;
  --color-brand-600: #2563eb;

  --font-sans: 'Inter', system-ui, sans-serif;
  --radius-card: 0.75rem;
  --shadow-card: 0 4px 12px rgba(0, 0, 0, 0.08);
}

v4 中 @theme 声明的变量会自动生成对应的 Tailwind 类名:bg-brand-500、text-brand-600、rounded-card、shadow-card。不需要再在 JS 配置中映射一次。

5.2 暗色模式原生支持

@import "tailwindcss";

@theme {
  --color-surface: #ffffff;
  --color-surface-dark: #0f172a;
}

.dark {
  --color-surface: var(--color-surface-dark);
}

v4 的暗色配色可以直接在同一 CSS 文件内完成,不再需要跨文件维护变量。

5.3 @apply 在 v4 中的变化

v4 中的 @apply 语法保持不变,但 @layer 的概念进一步简化。由于 v4 采用基于 cascade layers 的架构,自定义组件的优先级管理更加透明:

@import "tailwindcss";

@utility btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-md);
  padding: 0.5rem 1rem;
  font-weight: 500;
}

@utility 是 v4 的新指令,功能类似于 v3 的 @layer components + @apply,但语义更清晰。

5.4 v4 迁移评估

维度v3 (当前稳定)v4 (预览/早期)
配置方式tailwind.config.jsCSS-first (@theme)
构建器PostCSS / webpack / Vite 均支持推荐 Lightning CSS
包体积已极佳 (JIT)进一步缩减
IDE 支持Tailwind CSS IntelliSense 完善持续适配中
生产建议首选,生态成熟可评估实验,不建议直接上生产

六、与其他技术栈的衔接

Tailwind 并非孤立存在,它与前端主流框架的深度整合决定了项目体验的上限:

  • React:Tailwind 与 JSX 的结合已成行业标准,配合 React Hooks 完全指南 中的状态逻辑,可构建高度可复用的 UI 组件。
  • Vue:在 <template> 中使用 Tailwind 类名同样流畅,配合 Vue Router 完全指南 的页面级布局思考,可实现全站视觉一致性。
  • Next.js / Nuxt:服务端渲染对 CSS 的体积敏感,Tailwind JIT 模式 + PurgeCSS 恰好解决了这一痛点。

附:类名速查表(A.1 – A.20 全量折叠版)

以下内容覆盖 Tailwind 全部 20 大类原子类,可作为日常开发「Ctrl+F」速查手册。需要时展开对应条目即可。


A.1 布局(Layout) — 包含 Display、Position、Z-index、Flexbox、Grid、Multi-column

A.1.1 Display

block
inline-block
inline
flex
inline-flex
table
inline-table
table-row
table-cell
grid
inline-grid
contents
hidden

A.1.2 Position

static
fixed
absolute
relative
sticky

辅助类:

inset-0
top-0
right-0
bottom-0
left-0
inset-x-0
inset-y-0

支持 arbitrary:

top-[10px]
left-[50%]

A.1.3 Z-index

z-0
z-10
z-20
z-30
z-40
z-50
z-auto
z-[999]

A.1.4 Flexbox

flex
inline-flex
flex-row / flex-row-reverse
flex-col / flex-col-reverse
flex-wrap / flex-nowrap / flex-wrap-reverse
justify-start/center/end/between/around/evenly
items-start/center/end
content-start/center/between

Flex-grow / shrink

flex-grow
flex-grow-0
flex-shrink
flex-shrink-0

Gap

gap-1 ... gap-96
gap-x-4
gap-y-6

A.1.5 Grid

grid
grid-cols-1 ... grid-cols-12
grid-rows-1 ... grid-rows-12
grid-flow-row / col / dense
auto-rows-auto / auto-cols-auto

Gap

gap-x-4
gap-y-4

Span

col-span-1 ... col-span-12
row-span-1 ... row-span-12

A.1.6 Multi-column(多列布局)

columns-1 ... columns-12
columns-auto
columns-[260px]

A.2 尺寸(Sizing) — Width、Height、Min/Max

A.2.1 Width(w-*)

w-0
w-px
w-1 ... w-96
w-auto
w-full
w-screen
w-min
w-max
w-fit
w-[200px]

A.2.2 Height(h-*)

h-0
h-px
h-1 ... h-96
h-full
h-screen
h-fit

A.2.3 Min/Max

min-w-0 / min-w-full / min-w-[100px]
max-w-xs / sm / md / lg / xl / 2xl / 3xl...
max-w-screen-sm / md / lg / xl
min-h-0
min-h-full
max-h-screen

A.3 间距(Spacing) — Padding、Margin

Tailwind spacing scale:

0 0.5 1 1.5 2 2.5 ... 96

单位为 rem(默认 4px scale)。

A.3.1 Padding (p-*)

p-0 p-1 p-2 ... p-96
px-4 py-2
pt-4 pr-4 pb-4 pl-4
p-[10px]

A.3.2 Margin (m-*)

m-0 m-1 ... m-96
my-4 mx-2
-ml-4
m-auto

A.4 排版(Typography) — Font size、Weight、Line-height、Tracking、Align、Color

A.4.1 Font size

text-xs
text-sm
text-base
text-lg
text-xl
text-2xl ... text-9xl
text-[32px]

A.4.2 Font weight

font-thin
font-extralight
font-light
font-normal
font-medium
font-semibold
font-bold
font-extrabold
font-black

A.4.3 Line-height

leading-none
leading-tight
leading-snug
leading-normal
leading-relaxed
leading-loose
leading-[3rem]

A.4.4 Letter spacing

tracking-tighter
tracking-tight
tracking-normal
tracking-wide
tracking-wider
tracking-widest

A.4.5 Text align

text-left
text-center
text-right
text-justify

A.4.6 Text color

text-black
text-white
text-gray-500
text-blue-600
text-red-500
text-primary-500
text-[var(--text-color)]

A.5 背景(Background) — Background color、Gradient、Background image

A.5.1 Background color

bg-gray-100
bg-blue-500
bg-red-600
bg-primary-500
bg-[var(--bg)]

A.5.2 Gradient

bg-gradient-to-r
bg-gradient-to-b
from-blue-500
via-purple-500
to-pink-500

A.5.3 Background image

bg-none
bg-[url('/img/pattern.png')]

A.6 边框(Border) — Border width、color、radius

A.6.1 Border width

border
border-0
border-2
border-4
border-8

A.6.2 Border color

border-gray-300
border-blue-500
border-red-300
border-[var(--border)]

A.6.3 Border radius

rounded-none
rounded-sm
rounded
rounded-md
rounded-lg
rounded-xl
rounded-2xl
rounded-3xl
rounded-full
rounded-[12px]

A.7 Outline & Ring(焦点样式)

A.7.1 Ring

ring
ring-1 ring-2 ring-4
ring-blue-500
ring-offset-2

A.7.2 Outline

outline
outline-none
outline-blue-500

A.8 阴影(Shadow)
shadow-xs
shadow-sm
shadow
shadow-md
shadow-lg
shadow-xl
shadow-2xl
shadow-inner
shadow-none
shadow-[0_4px_12px_rgba(0,0,0,.15)]

A.9 过滤器(Filter / Backdrop)

A.9.1 Filter

filter
blur-sm blur-md blur-lg
brightness-50
contrast-125
grayscale
invert
sepia

A.9.2 Backdrop

backdrop-blur-sm
backdrop-brightness-50
backdrop-opacity-50

A.10 变换(Transform)
transform
scale-95 scale-100 scale-110
rotate-45 rotate-90
translate-x-4 translate-y-2
skew-x-6 skew-y-3

A.11 动画(Animation)

默认动画:

animate-spin
animate-ping
animate-pulse
animate-bounce

自定义 keyframes:

animate-[wiggle_1s_ease-in-out_infinite]

A.12 过渡(Transition)
transition
transition-colors
transition-opacity
duration-75
duration-150
ease-in
ease-out
ease-in-out

A.13 表格(Table)
table-auto
table-fixed
border-collapse
border-separate
caption-top caption-bottom

A.14 列表(List)
list-none
list-disc
list-decimal
marker:text-blue-500

A.15 交互(Interactivity) — Cursor、User select、Pointer events

A.15.1 Cursor

cursor-pointer
cursor-default
cursor-wait
cursor-not-allowed

A.15.2 User select

select-none
select-text
select-all
select-auto

A.15.3 Pointer events

pointer-events-none
pointer-events-auto

A.16 可见性(Visibility)
visible
invisible
collapse

A.17 Scroll(滚动控制)
overflow-auto
overflow-hidden
overflow-scroll
scroll-smooth
snap-x
snap-center

A.18 响应式(Responsive)

Tailwind 所有类都支持:

sm:
md:
lg:
xl:
2xl:

例如:

sm:text-sm
md:text-base
lg:text-lg
xl:text-xl

A.19 状态变体(State Variants) — Hover、Focus、Group、Peer、ARIA、Data

Hover, Focus, Active…

hover:bg-blue-500
focus:ring
active:scale-95
focus-visible:ring-2

Group & Peer

group-hover:text-white
peer-focus:border-blue-500
peer-invalid:text-red-500

ARIA & Data 属性

aria-checked:bg-blue-500
data-[state=open]:rotate-180

(shadcn/ui 大量使用)


A.20 Arbitrary Values(任意值)

Tailwind 的所有体系最终都支持:

text-[32px]
w-[calc(100%-2rem)]
bg-[var(--primary)]
rounded-[10px]
grid-cols-[1fr_2fr]

这是 Tailwind 的终极扩展能力。


附录 A 总结

本扩展版附录在保留全部 A.1–A.20 类名速查手册的基础上,新增了以下五个深度技术主题:

  1. Design Token 定制 — 从 tailwind.config.js 到 CSS 变量的完整映射流程,打通设计规范与工程实现。
  2. 暗色模式主题切换 — darkMode: 'class' 配合 CSS 变量实现三色态(亮/暗/跟随系统),并提供本地持久化方案。
  3. @layer @apply 组件库实战 — 用原子类封装可复用的 Button / Card / Modal,解决 Utility First 与组件化之间的张力。
  4. PostCSS 插件生态 — typography(排版)、forms(表单统一)、container-queries(容器查询)、line-clamp(文本截断)的完整用法。
  5. Tailwind v4 前瞻 — CSS-first 配置、@theme 变量系统、@utility 新指令,以及迁移评估建议。

同时,附录与站内多个专题深度关联:shadcn/ui 组件实践见 附录 B ,纯类名速查见 附录 C ,React 生态整合见 React 专题 ,Vue 状态管理见 Pinia 指南 ,Vue 路由布局见 Vue Router 指南 。

掌握以上内容后,你已具备从「原子类开发者」进阶为「设计系统架构师」的完整能力。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「frontend」更多文章

  1. GraphQL BFF 与微前端:多前端团队的 Schema 分片与协作模式
  2. 前端 GraphQL 客户端集成:Apollo Client、Relay 与 urql 选型
  3. 前端性能调试实战:从首屏加载到运行时瓶颈