菜单

概述

相关源文件

本文档介绍了Screenshot-to-Code应用程序,这是一个由AI驱动的工具,可以将屏幕截图模型、Figma设计甚至屏幕录制转换为功能代码,支持多种AI模型。有关特定子系统的更详细信息,请参阅系统架构页面。

目的与范围

Screenshot-to-Code通过利用AI模型分析图像并生成各种技术栈的相应代码,充当了视觉设计与工作代码实现之间的桥梁。本Wiki页面涵盖了

  • 高层系统架构
  • 核心组件及其交互
  • 用户工作流程和代码生成过程
  • 支持的AI模型和技术栈

来源: README.md1-38 frontend/src/App.tsx1-40

系统架构概览

该应用程序包含两个主要组件

  1. 前端:一个基于React的用户界面,负责用户交互、显示生成的代码和管理应用程序状态
  2. 后端:一个FastAPI服务,负责处理请求、与AI模型交互并将生成的代码流式传输回前端

来源: README.md10-17 frontend/src/lib/stacks.ts1-11 backend/llm.py19-34

用户工作流程

典型用户工作流程遵循以下步骤

  1. 输入获取:用户上传截图,提供URL或录制屏幕捕获
  2. 配置:用户选择所需的技术栈和AI模型
  3. 代码生成:系统处理输入并生成代码
  4. 预览和编辑:用户查看生成的代码,通过自然语言命令进行更新,并根据需要进行迭代

来源: frontend/src/App.tsx168-229 backend/routes/generate_code.py159-437

核心应用程序组件

该应用程序由几个关键组件协同工作组成

应用程序状态管理

系统采用有限状态机方法,具有三个主要状态

这些状态决定了显示的用户界面和可用的操作

  • 初始状态:显示输入选项(上传图片、输入URL、导入代码)
  • 编码中:显示生成进度和状态更新
  • 代码就绪:显示生成的代码,提供预览和编辑功能

来源: frontend/src/types.ts22-26 frontend/src/App.tsx55-57 frontend/src/App.tsx380-390

前端结构

前端围绕这些应用程序状态进行组织,并使用Zustand进行状态管理

来源: frontend/src/App.tsx17-18 frontend/src/App.tsx27-56 frontend/src/App.tsx380-390

后端API结构

后端提供代码生成所需的API端点

来源: backend/routes/generate_code.py38-159 backend/llm.py42-309

支持的技术

AI模型

系统支持多种AI模型用于代码生成

模型提供商备注
GPT-4oOpenAI推荐模型
Claude 3.7 SonnetAnthropic根据文档显示的最佳模型
Claude 3.5 SonnetAnthropic替代模型
GeminiGoogle替代模型

来源: README.md19-23 backend/llm.py19-34

技术栈

该应用程序可以生成多种技术栈的代码

组件生产就绪
HTML + TailwindHTML, Tailwind CSS
HTML + CSSHTML, CSS
React + TailwindReact, Tailwind CSS
BootstrapBootstrap
Vue + TailwindVue, Tailwind CSSBeta
Ionic + TailwindIonic, Tailwind CSSBeta
SVGSVGBeta

来源: README.md9-17 frontend/src/lib/stacks.ts1-23 backend/prompts/types.py14-22

代码生成过程

代码生成工作流程涉及多个步骤

过程中的关键步骤:

  1. 前端通过WebSocket发送图像和配置
  2. 后端根据选择的堆栈和输入创建提示
  3. 提示发送到适当的AI模型
  4. 生成的代码以实时流式传输回前端
  5. 如果启用了图像生成,则占位符将被AI生成的图像替换
  6. 最终代码显示在预览窗格中

来源: frontend/src/App.tsx168-229 backend/routes/generate_code.py41-74 backend/routes/generate_code.py409-436

版本控制系统

该应用程序包含一个版本控制系统来跟踪生成代码的更改

此版本控制系统允许用户

  • 跟踪版本之间的更改
  • 回滚到以前的版本
  • 生成相同设计的变体
  • 维护用户指令的历史记录

来源: frontend/src/App.tsx37-44 frontend/src/App.tsx178-204

部署选项

该应用程序可以以多种方式部署

  1. 托管版本:可在 screenshottocode.com 上使用(付费服务)
  2. 本地开发:使用本地后端和前端进行开发
  3. Docker部署:使用Docker Compose进行容器化部署

来源: README.md35-37 README.md39-78 README.md80-90