用AI开发者空间搭建AI灵感画板:Vite + 原生JS轻量实践

举报
yd_243549746 发表于 2026/10/22 10:24:58 2026/10/22
【摘要】 从零搭建一个卡片式 AI 灵感管理单页应用,覆盖 CRUD、标签筛选、模糊搜索与 localStorage 持久化,并记录在华为云 AI 开发者空间中开发、预览与发布作品的完整流程。

背景

独立开发者在日常工作中经常闪现 AI 产品灵感,但手机备忘录、聊天记录和便签散落各处,真正回头整理时往往找不到上下文。我想要一个足够轻、打开即用、不依赖后端的工具,于是有了这个「AI 灵感画板」。

它只有一个页面:用卡片记录灵感,用标签分类,用关键词搜索,数据保存在浏览器 localStorage 中。项目完整走通了「AI 生成—本地运行—公网预览—发布到作品展览馆」的流程。

一、作品定位与功能

目标用户:独立开发者、产品经理、AI 应用爱好者。

核心功能:

  • 灵感卡片的新增、编辑、删除与查看;
  • 多标签管理与组合筛选;
  • 标题与描述的模糊搜索;
  • localStorage 自动持久化;
  • 响应式布局,手机也能用。

二、技术选型

没有引入 React 或 Vue,而是选择 Vite + 原生 JavaScript + CSS3:

  • Vite 提供开箱即用的开发服务器和构建能力;
  • 原生 JS 足够处理卡片 CRUD 和 DOM 渲染;
  • 零运行时框架依赖,构建产物小,部署简单;
  • localStorage 免去后端和数据库成本。

目录结构:

ai-inspiration-board/
├── index.html
├── package.json
├── src/
│   ├── main.js
│   └── style.css
└── README.md

三、数据模型与持久化

每张卡片包含 id、title、description、tags 和创建时间:

const STORAGE_KEY = 'ai-inspiration-board:cards';

function loadCards() {
  try {
    return JSON.parse(localStorage.getItem(STORAGE_KEY)) || [];
  } catch (error) {
    console.warn('读取本地数据失败', error);
    return [];
  }
}

function saveCards(cards) {
  localStorage.setItem(STORAGE_KEY, JSON.stringify(cards));
}

这里有两个细节:

  1. JSON.parse 一定要用 try/catch 包裹,避免历史脏数据导致页面白屏;
  2. 读写逻辑集中封装,后续换 IndexedDB 或云端同步时只需替换这一层。

四、渲染与事件委托

卡片列表使用事件委托,避免每次渲染都重复绑定事件:

list.addEventListener('click', (event) => {
  const button = event.target.closest('[data-action]');
  if (!button) return;
  const { action, id } = button.dataset;
  if (action === 'edit') openEditor(id);
  if (action === 'delete') removeCard(id);
});

渲染用户输入时使用 textContent 而不是 innerHTML,避免把标题或描述里的 HTML 当成代码执行:

titleEl.textContent = card.title;
descEl.textContent = card.description;

五、标签筛选与模糊搜索

筛选逻辑可以合并成一次 filter,输入变化时重新计算可见卡片:

function getVisibleCards() {
  const keyword = searchInput.value.trim().toLowerCase();
  return cards.filter((card) => {
    const matchTag = activeTag === 'all' || card.tags.includes(activeTag);
    const text = (card.title + ' ' + card.description).toLowerCase();
    return matchTag && text.includes(keyword);
  });
}

标签栏由所有卡片动态汇总,点击标签切换 activeTag,再调用 render 即可。

六、在 AI 开发者空间中的开发与发布

这次没有在本地从零配置环境,而是直接在华为云 AI 开发者空间的 AI Shell 中描述需求,让 AI 生成项目骨架和首版代码。主要流程:

  1. 在 AI 对话中说明作品用途、目标用户、核心功能和界面风格;
  2. 由 AI 生成 Vite 项目并启动开发服务器;
  3. 通过 DevBridge 开发隧道获得临时公网地址,在浏览器中验收功能;
  4. 把代码推送到 GitCode 仓库,保留可复现的源码;
  5. 在 AI 对话中安装作品发布 Skill,按提示生成封面、简介和架构图,提交到开发者作品展览馆。

作品页:https://gallery.developer.huaweicloud.com/gallery/006889d39a400000

代码仓:https://gitcode.com/qq_34509189/ai-inspiration-board

七、踩坑记录

  • 本地存储不可用:隐私模式或存储配额不足时 localStorage 会抛异常,必须捕获;
  • 事件重复绑定:列表重渲染后不要重复 addEventListener,事件委托更稳;
  • 移动端适配:记得设置 viewport,标签栏在窄屏下要允许横向滚动;
  • 发布材料:Git 仓库地址和分支是必填项,README 要写清安装、运行和目录结构;
  • 体验地址:临时隧道过期不影响作品提交,但长期展示最好部署到稳定环境。

八、后续计划

下一步准备增加 JSON 导入导出、标签云、PWA 离线安装,以及可选的云端同步。对这个方向感兴趣的朋友,欢迎在评论区交流。

总结

「AI 灵感画板」本身不复杂,但它验证了一条完整的个人开发闭环:用 AI 快速生成可运行的原型,在真实环境中验收,再把代码、文档和作品页一起交付。对独立开发者来说,先把想法跑起来,比一开始追求完美架构更重要。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。