引言
从想法到代码,中间往往要经历画原型、出设计稿等环节。
用 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-md、rounded-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,则让这种朴素的结构表达拥有了执行力。
当机器能够理解结构,文本就不再只是说明,而成为代码的源头。