0 到 1 用前端实现一个 AI Logo 生成器:表单、Bootstrap、DALL·E 调用全流程实战
随着 AIGC 技术快速普及,越来越多的前端开发者开始尝试构建智能应用。今天通过一个非常实用的项目——AI Logo 生成器,展示如何用原生 HTML + Bootstrap + JavaScript 组织表单输入,并通过图片生成 API 调用大模型生成 App 图标。
本文包括以下内容:
- Bootstrap 表单 UI 构建
- HTML5 表单必备特性与语义化用法
- JavaScript 事件与
this指向说明 - fetch 调用图片生成 API
- 动态插入图片 DOM 节点展示效果
完整 Demo 直接可运行,你可以用它体验从浏览器端直接驱动 AIGC 的开发方式。
项目背景
在 App 设计与产品孵化阶段,快速产出高质量 logo 是一个刚需。传统方式:
- 设计师用 Figma、PS 反复推敲
- PM 找外包、素材库
- 版本不断讨论、返工
而现在,通过 AIGC,我们可以直接输入名称与描述,即可产出符合现代移动端 UI 风格的高质量徽标。
本文构建的 Demo 支持:
- 输入应用名称
- 输入应用描述
- 一键生成 AI Logo
- 页面内实时展示
技术栈说明
- UI:Bootstrap 3(直接使用 CDN)
- 表单能力:HTML5 原生 Form
- 逻辑:原生 JavaScript
- AIGC 模型:DALL·E 系列图像生成 API
- 图片展示:动态创建 DOM 节点 append
技术简单、结构干净、不依赖 Webpack/Vite,更适合入门理解 LLm 调用核心本质。
核心代码
下面是主要结构(敏感内容已脱敏,请使用自己的 Key):
<form name="appForm">
<div class="form-group">
<label for="titleInput">Bot名称:</label>
<input placeholder="请输入名称" id="titleInput" name="title" type="text" required class="form-control">
</div>
<div class="form-group">
<label for="descInput">Bot描述:</label>
<textarea name="decs" placeholder="请输入描述" class="form-control" id="descInput" rows="3"></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">生成图标</button>
</div>
</form>
表单亮点说明
| 特性 | 含义 |
|---|---|
required | 必填字段,无需 JS 校验 |
placeholder | 提示用户输入,提高可用性 |
label for + id | 兼容无障碍阅读,提升 Web Accessibility |
name="appForm" | 可通过 document.forms 查询 |
表单提交时若字段为空会自动提示,这是 HTML5 原生能力。
JS 逻辑要点
- 通过
document.forms["appForm"]获取表单 - 监听
submit事件 e.preventDefault()阻止默认跳转this在事件回调中指向当前 DOM 元素(form)
oForm.addEventListener("submit", function (e) {
e.preventDefault();
const appName = this["title"].value;
const appDesc = this["decs"].value;
const prompt = `设计移动App图标,名称:${appName},描述:${appDesc},风格高端大气上档次`;
fetch('https://example.com/v1/images/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: "dall-e-3",
prompt,
n: 1,
size: "1024x1024"
})
})
.then(res => res.json())
.then(data => {
const img = document.createElement('img');
img.src = data.data[0].url;
document.getElementById('logo').appendChild(img);
});
});
事件中 this 指向说明
在 DOM 事件回调中:
this指向绑定事件的元素,即form- 与箭头函数区别:箭头函数没有自己的
this
因此,以下写法正确:
const appName = this["title"].value;
最终效果
提交表单后,页面会动态插入 AI 渲染图标:
为什么不用 Node / Next.js?
这是一个纯前端原生 Demo,特点:
- 最少依赖
- 直接跑在浏览器
- 便于理解 llm 调用本质:前端表单 + 后端 AI API
实际生产建议使用服务端调用
原因:
- 隐藏 API Key
- 支持鉴权
- 控制调用频次与费用
- 图片存储与缓存
HTML5 Form 特性总结
| 特性 | 意义 |
|---|---|
required | 防止空提交 |
placeholder | 用户提示 |
label for | 无障碍体验 |
event.preventDefault() | 阻止默认页面跳转 |
很多初学者直接用 input onclick, 但正确做法是监听 form 提交事件,更语义化。
AIGC 的本质
无论 Web UI 或 IDE 插件,其底层都类似:
- 向 LLM 发起一个 JSON 请求(POST)
- 携带 API Key
- 接收 JSON 形式的结果
- 渲染内容
你看到的 UI 只是一个“可视化壳”,底层依然是 API 调用。本示例就是手写一个真正的最小壳。
小结与扩展方向
本文实现了:
- 基于 HTML + Bootstrap 构建简单 UI
- HTML5 表单规范用法
- JS 事件处理与
this解析 - fetch 调用大模型生成图片
- DOM 动态插入展示结果
下一步你可以继续增强:
- 加 loading 动画
- 加失败提示
- 多风格选择(拟物 / 极简 / Cyberpunk)
- 用户按比例裁切尺寸
- 下载按钮
- 改成 Vue / React 组件
继续深入,还可以:
- 支持多语言 prompt
- 做图标模板、SVG 重绘
- 把生成图片上传 OSS
AIGC+前端会成为未来标配能力,建议多做项目,逐步把工具打磨成自己的“设计 + 代码 + 产品三合一”能力体系。