1. 引言

TRAE SOLO 是字节跳动推出的 AI 编程工具,支持将 Figma 设计稿直接导入并生成前端代码。本文将从环境准备、导入流程、代码生成与二次开发四个维度,完整演示如何把一份 Figma 设计稿转化为可运行的 React 项目。

2. 环境准备

在开始之前,需要准备以下环境:

  • TRAE SOLO:最新版本,建议 1.0 以上。
  • Figma 账号:用于创建和分享设计稿。
  • Node.js:16.0 以上版本,用于运行生成的项目。
  • Git:用于版本管理。

3. Figma 设计稿准备

为了让 TRAE SOLO 更好地识别设计稿,建议遵循以下规范:

  • 使用 自动布局(Auto Layout) 组织图层,便于生成弹性布局。
  • 为关键组件命名,例如 Button、Card、Navbar。
  • 使用 组件(Component) 和 变体(Variants) 管理可复用元素。
  • 避免使用过于复杂的混合模式和不透明度过低的图层。

以下是一个简单的 Figma 设计稿结构示例:

Frame: LandingPage
├── Navbar
│   ├── Logo
│   └── Menu
├── HeroSection
│   ├── Title
│   ├── Subtitle
│   └── CTAButton
└── Footer
    ├── Copyright
    └── Links

4. 导入 Figma 设计稿

在 TRAE SOLO 中导入 Figma 设计稿有两种方式:通过 Figma 链接导入,或通过本地文件导入。

4.1 通过 Figma 链接导入

首先在 Figma 中分享设计稿,获取分享链接:

https://www.figma.com/file/xxxxxxxx/LandingPage?node-id=0%3A1

然后在 TRAE SOLO 中执行导入命令:

trae import figma --url "https://www.figma.com/file/xxxxxxxx/LandingPage?node-id=0%3A1" --output ./src/components

4.2 通过本地文件导入

也可以将 Figma 设计稿导出为 JSON 格式后导入:

trae import figma --file ./design.json --output ./src/components

导入完成后,TRAE SOLO 会在指定目录下生成对应的组件代码。

5. 生成代码结构

导入完成后,生成的代码结构如下:

src/components/
├── Navbar/
│   ├── index.tsx
│   ├── index.css
│   └── types.ts
├── HeroSection/
│   ├── index.tsx
│   ├── index.css
│   └── types.ts
└── Footer/
    ├── index.tsx
    ├── index.css
    └── types.ts

每个组件都包含三个文件:index.tsx 负责结构,index.css 负责样式,types.ts 负责类型定义。

6. 代码实例:生成的 Navbar 组件

以下是通过 Figma 导入自动生成的 Navbar 组件代码:

import React from 'react';
import './index.css';

interface NavbarProps {
  logo: string;
  menuItems: string[];
}

const Navbar: React.FC<NavbarProps> = ({ logo, menuItems }) => {
  return (
    <nav className="navbar">
      <div className="navbar-logo">{logo}</div>
      <ul className="navbar-menu">
        {menuItems.map((item, index) => (
          <li key={index} className="navbar-menu-item">{item}</li>
        ))}
      </ul>
    </nav>
  );
};

export default Navbar;

对应的样式文件:

.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 32px;
  background-color: #ffffff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.navbar-logo {
  font-size: 20px;
  font-weight: 700;
  color: #1a1a1a;
}

.navbar-menu {
  display: flex;
  gap: 24px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.navbar-menu-item {
  font-size: 14px;
  color: #666666;
  cursor: pointer;
}

.navbar-menu-item:hover {
  color: #1890ff;
}

7. 代码实例:HeroSection 组件

HeroSection 组件包含标题、副标题和按钮:

import React from 'react';
import './index.css';

interface HeroSectionProps {
  title: string;
  subtitle: string;
  ctaText: string;
  onCtaClick?: () => void;
}

const HeroSection: React.FC<HeroSectionProps> = ({
  title,
  subtitle,
  ctaText,
  onCtaClick,
}) => {
  return (
    <section className="hero">
      <h1 className="hero-title">{title}</h1>
      <p className="hero-subtitle">{subtitle}</p>
      <button className="hero-cta" onClick={onCtaClick}>{ctaText}</button>
    </section>
  );
};

export default HeroSection;

8. 组装页面

将生成的组件组装到页面中:

import React from 'react';
import Navbar from './components/Navbar';
import HeroSection from './components/HeroSection';
import Footer from './components/Footer';

const App: React.FC = () => {
  return (
    <div className="app">
      <Navbar
        logo="MyBrand"
        menuItems={['首页', '产品', '关于', '联系']}
      />
      <HeroSection
        title="欢迎使用 TRAE SOLO"
        subtitle="从 Figma 设计稿到可运行代码,只需一步"
        ctaText="立即开始"
        onCtaClick={() => alert('开始使用!')}
      />
      <Footer copyright="© 2026 MyBrand" />
    </div>
  );
};

export default App;

9. 运行项目

安装依赖并启动开发服务器:

npm install
npm run dev

打开浏览器访问 http://localhost:3000,即可看到与 Figma 设计稿一致的页面效果。

10. 二次开发与优化

生成的代码是基础模板,实际项目中通常需要进一步优化:

  • 接入状态管理:使用 Redux 或 Zustand 管理全局状态。
  • 添加路由:使用 React Router 实现多页面跳转。
  • 响应式适配:补充移动端断点样式。
  • 接入接口:将静态数据替换为后端 API 返回的数据。

以下是一个接入接口的示例:

import React, { useEffect, useState } from 'react';
import Navbar from './components/Navbar';

const App: React.FC = () => {
  const [menuItems, setMenuItems] = useState<string[]>([]);

  useEffect(() => {
    fetch('/api/menu')
      .then((res) => res.json())
      .then((data) => setMenuItems(data.items));
  }, []);

  return (
    <div className="app">
      <Navbar logo="MyBrand" menuItems={menuItems} />
    </div>
  );
};

export default App;

11. 常见问题与解决方案

问题原因解决方案
导入后样式错乱设计稿未使用自动布局在 Figma 中为图层添加自动布局后重新导入
组件命名不清晰图层命名随意规范图层命名,使用语义化名称
图片资源缺失设计稿中的图片未导出在 Figma 中导出图片并放入项目的 assets 目录
字体不一致设计稿使用了本地字体将字体文件放入项目并配置 @font-face

12. 总结

TRAE SOLO 的 Figma 导入功能大幅缩短了从设计到开发的周期。通过规范的设计稿准备、合理的组件拆分和必要的二次开发,可以快速产出高质量的前端代码。建议在实际项目中结合团队的设计规范和工程化实践,让导入的代码更好地融入现有项目体系。

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐