AgentHarness 课程

Figma 集成实战

设计稿导入、代码生成、样式调整、组件映射

引言:打通设计到代码的最后一公里

传统开发流程中,从设计稿到代码是一个漫长且容易出错的环节:设计师用 Figma 出图 -> 开发者手动还原 -> 像素级对齐 -> 响应式适配 -> 设计变更 -> 重新修改。这个循环反复进行,消耗大量开发时间。

CodeBuddy 的 Figma 集成彻底改变了这个流程:设计稿直接转代码,设计变更自动同步。本章将深入讲解 Figma 集成的工作原理、样式映射规则和实战案例。


1. Figma -> Code 工作原理

1.1 整体流程

Figma 设计稿
    |
    v
CodeBuddy 解析 Figma API
    |
    v
分析图层结构 -> 识别组件层级
分析样式属性 -> 映射 CSS/Tailwind
分析自动布局 -> 生成 Flexbox/Grid
分析组件实例 -> 生成可复用组件
    |
    v
生成目标框架代码(React/Vue/HTML)

1.2 支持的设计元素

Figma 元素生成的代码
Frame<div> / 布局容器
Text<p> / <h1> / <span>
Image<img> / 背景图
Button<button> 组件
Input<input> 表单元素
Auto LayoutFlexbox / Grid
Component可复用 React/Vue 组件
Instance组件实例化
IconSVG 图标组件

1.3 连接方式

方式一:拖拽导入

  • 从 Figma 复制 Frame -> 粘贴到 CodeBuddy IDE

方式二:链接导入

请根据这个 Figma 链接生成代码:
https://www.figma.com/file/xxxxx/Design

方式三:插件导入

  • 安装 CodeBuddy Figma 插件
  • 在 Figma 中选择 Frame -> 导出到 CodeBuddy

2. 样式映射详解

2.1 Figma 属性 -> Tailwind CSS 映射表

Figma 属性Tailwind 类名示例
Fill: #3B82F6bg-blue-500背景色
Fill: #FFFFFFbg-white白色背景
Stroke: #E5E7EBborder border-gray-200边框
Padding: 16pxp-4内边距
Padding: 8px 16pxpx-4 py-2水平/垂直内边距
Margin: 24pxm-6外边距
Border Radius: 8pxrounded-lg圆角
Border Radius: 9999pxrounded-full全圆角
Font Size: 14pxtext-sm小字体
Font Size: 16pxtext-base正常字体
Font Size: 24pxtext-2xl大字体
Font Weight: 400font-normal正常粗细
Font Weight: 700font-bold粗体
Line Height: 1.5leading-normal行高
Text Align: Centertext-center居中对齐
Opacity: 50%opacity-50透明度
Shadowshadow-md阴影
Auto Layout: Rowflex flex-row水平布局
Auto Layout: Columnflex flex-col垂直布局
Gap: 16pxgap-4子元素间距
Fixed Width: 320pxw-80固定宽度
Fill Containerw-full填充父容器

2.2 响应式适配

CodeBuddy 会自动分析设计稿中的断点,生成响应式代码:

// Figma 中定义了 Desktop (1440px) 和 Mobile (375px) 两个版本
// CodeBuddy 自动生成:

<div className="flex flex-col md:flex-row gap-4 md:gap-8">
  <div className="w-full md:w-1/3">
    <Sidebar />
  </div>
  <div className="w-full md:w-2/3">
    <MainContent />
  </div>
</div>

3. 组件映射

3.1 Figma Component -> React Component

Figma 中的 Component 会被映射为可复用的 React 组件:

// Figma Component: "PrimaryButton"
// Variants: Default, Hover, Disabled, Loading

interface PrimaryButtonProps {
  variant?: 'default' | 'hover' | 'disabled' | 'loading';
  size?: 'sm' | 'md' | 'lg';
  children: React.ReactNode;
  onClick?: () => void;
}

export function PrimaryButton({
  variant = 'default',
  size = 'md',
  children,
  onClick
}: PrimaryButtonProps) {
  const sizeClasses = {
    sm: 'px-3 py-1.5 text-sm',
    md: 'px-4 py-2 text-base',
    lg: 'px-6 py-3 text-lg',
  };

  return (
    <button
      className={`bg-blue-500 text-white rounded-lg font-medium
        ${sizeClasses[size]}
        ${variant === 'disabled' ? 'opacity-50 cursor-not-allowed' : ''}
        ${variant === 'loading' ? 'animate-pulse' : ''}`}
      onClick={variant !== 'disabled' ? onClick : undefined}
      disabled={variant === 'disabled'}
    >
      {variant === 'loading' ? 'Loading...' : children}
    </button>
  );
}

3.2 设计令牌提取

CodeBuddy 会从 Figma 中提取设计令牌(Design Tokens):

// theme/tokens.ts - 自动生成的设计令牌

export const tokens = {
  colors: {
    primary: {
      50: '#EFF6FF',
      100: '#DBEAFE',
      500: '#3B82F6',
      600: '#2563EB',
      700: '#1D4ED8',
    },
    neutral: {
      50: '#F9FAFB',
      100: '#F3F4F6',
      200: '#E5E7EB',
      700: '#374151',
      900: '#111827',
    },
    success: '#10B981',
    warning: '#F59E0B',
    error: '#EF4444',
  },
  spacing: {
    xs: '4px',
    sm: '8px',
    md: '16px',
    lg: '24px',
    xl: '32px',
  },
  borderRadius: {
    sm: '4px',
    md: '8px',
    lg: '12px',
    full: '9999px',
  },
  typography: {
    fontFamily: 'Inter, sans-serif',
    fontSize: {
      sm: '14px',
      base: '16px',
      lg: '18px',
      xl: '24px',
      '2xl': '32px',
    },
  },
};

4. 完整实战案例

4.1 场景:将 Figma 电商首页设计转为 React 代码

步骤 1:导入设计稿

请将这个 Figma 设计稿转为 React + Tailwind CSS 代码:
[粘贴 Figma 链接或拖拽 Frame]

步骤 2:AI 分析结构

识别到以下页面组件:
1. Header - 顶部导航栏
2. HeroBanner - 首页大图
3. ProductGrid - 商品网格
4. CategoryList - 分类列表
5. Footer - 底部信息

提取设计令牌:12 个颜色、5 个间距、4 个圆角
识别组件:Button、Card、Tag、Input

步骤 3:生成代码

src/
+-- components/
|   +-- Header.tsx
|   +-- HeroBanner.tsx
|   +-- ProductGrid.tsx
|   +-- ProductCard.tsx
|   +-- CategoryList.tsx
|   +-- Footer.tsx
+-- theme/
|   +-- tokens.ts
|   +-- tailwind.config.ts
+-- App.tsx

步骤 4:迭代优化

把商品卡片的 hover 效果改成放大 + 阴影加深

AI 直接修改 ProductCard.tsx 中的 hover 样式。


5. 常见陷阱

陷阱 1:Figma 授权需要网络

现象:无法连接 Figma API

解决:确保能访问 Figma API(可能需要代理),检查 Figma Token 是否有效

陷阱 2:复杂设计稿需要手动调整

现象:AI 生成的代码是基础版本,复杂交互逻辑需要人工优化

解决:AI 生成的是起点,不是终点。交互逻辑、动画效果通常需要人工完善

陷阱 3:设计稿命名不规范

现象:Frame 123、Group 456 这样的命名导致 AI 无法准确推断用途

解决:在 Figma 中使用有意义的图层名称,如 login-buttonuser-avatar


总结

功能价值
样式映射Figma 属性自动转为 Tailwind 类名
组件映射Figma Component 转为可复用 React 组件
设计令牌自动提取颜色、间距、字体等设计变量
响应式自动分析断点,生成响应式布局

下一章预告:我们将学习上下文管理,了解如何高效利用 AI 的上下文窗口。