用 ASCII 草图 + AI 快速生成前端代码

引言

从想法到代码,中间往往要经历画原型、出设计稿等环节。

用 ASCII 草图,可以跳过大量原型绘制、结构拆解和手动搭骨架的中间步骤。

这种表达方式其实一直存在,但真正让它进入工程流程的,是 AI 的能力提升。大语言模型对结构化文本具有很强的解析能力,能够识别文本中的层级、对齐关系与空间划分,并将这些结构信息稳定地映射为组件树和页面布局。

因此,ASCII 不再只是沟通草稿,而成为一种可执行的结构描述。

什么是 “ASCII 草图”

提到 ASCII,很多人的第一反应可能是那个年代久远的“字符画”。没错,ASCII 草图就是用字符来构建页面布局。

在 AI 时代,这种看似简陋的草图,其实蕴含着巨大的能量。大语言模型(LLM)对结构化文本的理解能力极强。相比于模糊的自然语言描述(“我要一个左边宽右边窄的布局”),ASCII 草图提供了一种所见即所得的结构化 Prompt

简单来说,ASCII 草图充当了视觉蓝图的角色,AI 根据这个结构生成代码。

为什么要让 AI 先生成 ASCII 草图 ?

你可能会想:直接让 AI 生成代码不就行了吗?为什么要中间多这一步?

这就涉及到一个沟通精度的问题。

直接描述布局的问题

用自然语言描述布局,很容易产生歧义。比如你说"左边放导航,右边放内容",AI 可能会理解成左右各占 50%,而你想要的是导航 200px 宽度。你说"卡片要突出一点",AI 理解的"突出"可能是加阴影,而你想要的是加大字号。

这些细节上的偏差,会导致生成出来的代码需要反复调整。

ASCII 草图作为中间层的价值

让 AI 先生成 ASCII 草图,相当于在需求和代码之间加了一个可视化确认步骤

结构一目了然:ASCII 图能直观展示层级关系、组件位置、相对大小,比自然语言描述更精确

快速迭代:草图不对,让 AI 改几句就行,比改代码快得多

专注布局:这一步只讨论结构,不涉及样式细节,避免过早陷入细节纠结

简单来说,ASCII 草图充当了视觉蓝图的角色——先确认布局结构没问题,再让 AI 填充代码实现。

实战演练:三步构建一个 Dashboard

光说不练假把式。假设我们要开发一个常见的后台管理系统 Dashboard,包含顶部导航、侧边栏、数据统计卡片和图表区域。

第一步:描述需求,让 AI 生成草图

你只需要用自然语言描述布局结构,让 AI 来生成 ASCII 草图。

Prompt 示例

> 我需要一个后台管理系统的 Dashboard 布局,包含: > - 顶部导航栏:左侧是 LOGO,中间是导航菜单,右侧是用户头像 > - 左侧边栏:垂直排列的导航菜单项 > - 主内容区: > - 标题"Dashboard Overview" > - 三个横向排列的统计卡片:Users、Revenue、Orders > - 下方是一个大的区域图表 > > 请帮我生成对应的 ASCII 布局草图。 

AI 会输出类似这样的草图:

+-------------------------------------------------------+ | LOGO [ Home ] [ Dashboard ] [ Settings ] [User] | +-------------------------------------------------------+ | | | | Menu | Dashboard Overview | | | | | [Nav1] | +----------+ +----------+ +----------+ | | [Nav2] | | Users | | Revenue | | Orders | | | [Nav3] | | 1,234 | | $12,000 | | 567 | | | | +----------+ +----------+ +----------+ | | | | | | +----------------------------------------+ | | | | | | | | | Revenue Chart (Area) | | | | | | | | | +----------------------------------------+ | +--------+----------------------------------------------+ 

这一步的核心是让 AI 帮你理清布局结构,而不是自己手工画图。

第二步:让 AI 根据草图生成代码

草图确认无误后,让 AI 基于这个结构生成实际代码。
Prompt 模板建议

> **角色设定**:你是一位精通现代前端架构的高级工程师。 > **任务**:请根据我提供的 ASCII 布局草图,生成对应的前端代码。 > **技术栈**:React + Tailwind CSS (或者 Vue3 + UnoCSS)。 > **具体要求**: > 1. 响应式设计:侧边栏在移动端折叠。 > 2. 组件化:请将顶栏、侧边栏、卡片、图表区域拆分为独立组件。 > 3. 样式:使用现代扁平化风格,配色参考 Stripe 官网。 > > **ASCII 草图如下**: > [在此处粘贴上面的 ASCII 图] 
第三步:见证奇迹,微调与落地

点击发送,AI 会迅速解析你的 ASCII 结构,并输出代码。

AI 的思考路径通常是这样的

1.解析外层结构:识别出 +---+| 包围的区域,判定这是一个 Header + Sidebar + Main Content 的经典布局。

2.识别组件:看到 Dashboard Overview 下的三个方块,识别为“统计卡片”,并且知道要复用三次。

3.推断样式:根据你的描述“现代扁平化”,它会自动填充 shadow-mdrounded-lg 等类名。

生成出来的代码通常已经具备了 80% 的可用性。你需要做的仅仅是:

  • 替换掉 AI 臆造的假数据。
  • 引入真实的图表库(如 Echarts 或 Recharts)替换占位符。
  • 微调一下 Tailwind 的间距。
    短短几分钟,一个结构清晰、样式现代化的页面骨架就诞生了。

附效果图

在这里插入图片描述

进阶技巧:让 ASCII 更“懂” AI

如果你想把这把“瑞士军刀”用得更溜,这里有几个实战技巧

1. 标注优于复杂图形
不要试图用 ASCII 画出圆角或阴影,那是浪费时间。你应该在图形旁边写注释。
例如:

+-----------------+ | [Icon] Title | <-- 这里的 Icon 请使用 lucide-react +-----------------+ | Content here... | <-- 文字限制两行,超出省略 +-----------------+ 

AI 能够读懂这些注释,并将其转化为代码约束。

2. 模块化思维
面对复杂的页面,不要试图画一张巨大的图。你可以分块输入:

  • Prompt A:画 Header。
  • Prompt B:画 Sidebar。
  • Prompt C:画 Content Area。
    最后让 AI 把它们组合起来。这样能大大降低 AI 解析错误的概率。

3. 迭代式修改
如果你觉得布局不对,不需要重画。直接在对话中修改字符:

  • 用户:“把侧边栏移到右边,宽度缩小一点。”
  • AI:(自动调整 CSS,将侧边栏 DOM 移到主内容区后面或改变 Flex 属性)。
    这种**“草图重构”**比“代码重构”要快得多,也更直观。

局限性

草图虽然方便,在效率上有极大提升,但是也存在一定的限制

1. 细节缺失:ASCII 无法表达字体大小、微妙的颜色渐变或复杂的动画。它解决的是布局问题,而不是视觉设计问题。

2. 非结构化内容:如果是图文混排非常复杂的文章页,ASCII 往往难以精确描述,这时候不如直接写 HTML 伪代码。

3. 逻辑盲区:AI 生成的是 UI 骨架,具体的业务逻辑(点击按钮触发什么 API)依然需要你手动注入。

总结

从 ASCII 草图到前端代码,本质上是一种降低沟通损耗的尝试。它让我们从繁琐的 HTML 标签嵌套中解脱出来,回归到结构设计本身。

而 AI,则让这种朴素的结构表达拥有了执行力。

当机器能够理解结构,文本就不再只是说明,而成为代码的源头。

Read more

纯QWidget绘制实现电子地图控件/非qml非web/多线程下载和加载瓦片/支持各种图形

纯QWidget绘制实现电子地图控件/非qml非web/多线程下载和加载瓦片/支持各种图形

一、前言说明 之前做的地图组件,耗费了巨大的时间精力,前后完善了五年之多,能够想到的应用场景几乎都实现了,也有不少的用户,现场实际需求也不断反馈,不断的修改和增加功能,尽管优点很多,依然有个巨大缺点就是依赖浏览器控件,性能肯定是要打折扣的,毕竟有些嵌入式板子甚至老的开发环境,不一定有浏览器控件,就算有,在嵌入式板子环境上或者一些国产硬件的系统上,配置比较低,在浏览器上运行的网页,性能指数级下降,甚至一些环境连GPU都没有,老板为了节省成本,尽量选一些配置低的板子,所以也没有一种可能用QWidget绘制来实现呢,这样性能极好,而且控制度极高,qt的painter非常灵活可靠。 经过大量的尝试改造,总算在今年实现了这个地图控件,不依赖浏览器控件,也不依赖qml,有些人用的Qt自带的qml的location组件来实现的,这个尽管方便,但是性能也低,因为嵌入式环境配置低的板子,根本无法正常跑起来qml,别提要新版的Qt才有qlocaltion组件。用qwidget来实现有两个最大难点,一个是如何将地理坐标映射到像素绘制坐标,一个是如何快速的加载瓦片多线程绘制,这个必须采用多个分层绘制的机制

前端国际化:别让你的应用只懂一种语言

前端国际化:别让你的应用只懂一种语言 毒舌时刻 这应用写得跟方言似的,出了本地就没人懂。 各位前端同行,咱们今天聊聊前端国际化。别告诉我你的应用还只有中文版本,那感觉就像在国际会议上只说方言——能说,但没人懂。 为什么你需要国际化 最近看到一个项目,想拓展海外市场,但所有文本都是硬编码在代码里的。我就想问:你是在做本地应用还是在做国际产品? 反面教材 // 反面教材:硬编码文本 function App() { return ( <div> <h1>欢迎来到我的网站</h1> <p>这是一个示例应用</p> <button>点击我</button> <div>

华为ENSP配置实验:双网段互通 + DNS 解析 + Web 访问,一步实现全网可达(基础)

华为ENSP配置实验:双网段互通 + DNS 解析 + Web 访问,一步实现全网可达(基础)

目录 一、案例接入 二、需求分析 三、配置步骤 3.1配置AR1的接口IP 3.2配置PC端、Server端、Client端的IP 3.2.1  PC1的配置 3.2.2 Client1的配置 3.2.3 Server1的配置 3.2.4 Server2的配置 四、Client1访问测试 五、结语 恭喜你成功的完成了本次实验 一、案例导入         在小型企业或园区网络场景中,跨网段设备互通与基于域名的服务访问是最基础也最核心的需求。想象这样一个场景:公司的业务服务器部署在 192.168.1.0/24 网段,而办公终端集中在 192.168.2.

webdav-server 终极指南:轻量级WebDAV服务器完整教程

在现代数字化办公环境中,文件共享和远程访问已成为日常工作的重要需求。webdav-server作为一个轻量级WebDAV服务器实现,提供了简单而强大的文件共享解决方案。本文将为您全面解析webdav-server的核心功能、部署方法和实战应用技巧。 【免费下载链接】webdavSimple Go WebDAV server. 项目地址: https://gitcode.com/gh_mirrors/we/webdav 为什么选择webdav-server?核心价值解析 webdav-server是一个基于Go语言开发的独立WebDAV服务器,具有以下核心优势: 🚀 轻量高效:单二进制文件部署,资源占用极低 🔒 安全可靠:支持TLS加密传输和多种认证方式 📁 跨平台兼容:支持Windows、Linux、macOS等主流操作系统 👥 权限精细控制:可配置用户级权限和目录访问规则 与传统的FTP或Samba共享相比,WebDAV协议提供了更丰富的文件操作功能和更好的集成性,特别适合需要Web界面访问或与办公软件集成的场景。 3步快速部署webdav-server 步