用原生前端实现 AI Logo 生成器:HTML5 表单 + Bootstrap + 大模型图片生成全流程实战

104 阅读4分钟

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 渲染图标:

屏幕截图 2025-11-02 153532.png


为什么不用 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+前端会成为未来标配能力,建议多做项目,逐步把工具打磨成自己的“设计 + 代码 + 产品三合一”能力体系。