教程预计阅读 10 分钟

OpenClaw 项目实战:用 AI 30分钟搭建一个 Next.js 应用

通过真实项目「AI工具导航站」,演示用 OpenClaw 在30分钟内从零搭建 Next.js 应用的完整流程,包含数据库设计、API开发、组件构建和问题修复。

#OpenClaw#Next.js#实战教程#AI编程#全栈开发#TypeScript

目标与准备

本教程将通过一个真实项目——AI 工具导航站——展示如何使用 OpenClaw 在30分钟内从零搭建一个功能完整的 Next.js 应用。

我们将构建的功能:

  • 工具列表页(支持按分类筛选)
  • 工具详情页
  • 搜索功能
  • 响应式设计(移动端适配)

技术栈: Next.js 15 + TypeScript + Tailwind CSS + Prisma + SQLite

前提条件:

  • 已安装 OpenClaw(参见安装指南)
  • Node.js 18+ 和 npm
  • 熟悉基本的 React/Next.js 概念

项目最终效果预览

第0分钟:项目初始化

# 创建 Next.js 项目
npx create-next-app@latest ai-tools-nav --typescript --tailwind --app --src-dir
cd ai-tools-nav

# 安装额外依赖
npm install prisma @prisma/client

# 启动 OpenClaw
openclaw

第1-5分钟:数据库 Schema 设计

> /code 使用 Prisma 创建 schema.prisma 文件,包含 Tool 模型,
  字段有:id, name, slug, description, category, logoUrl, websiteUrl,
  tags (JSON字符串), pricing (free/freemium/paid), rating, reviewCount,
  createdAt, updatedAt。使用 SQLite 作为数据库。

OpenClaw 生成 prisma/schema.prisma

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

model Tool {
  id          Int      @id @default(autoincrement())
  name        String
  slug        String   @unique
  description String
  category    String
  logoUrl     String?
  websiteUrl  String
  tags        String   @default("[]")
  pricing     String   @default("free")
  rating      Float    @default(0)
  reviewCount Int      @default(0)
  createdAt   DateTime @default(now())
  updatedAt   DateTime @updatedAt
}
# 初始化数据库
echo "DATABASE_URL="file:./dev.db"" > .env.local
npx prisma generate
npx prisma db push

⏱ 当前用时:5分钟

第6-12分钟:生成 Seed 数据和 API

> /code 创建 prisma/seed.ts,写入10条 AI 工具示例数据,
  包括 ChatGPT、Claude、Midjourney、GitHub Copilot 等工具,
  分类为 ai-chat、ai-image、ai-code 等
> /code 创建 src/app/api/tools/route.ts,
  支持 GET 请求,接受 category 和 search 查询参数,
  从 Prisma 查询并返回工具列表
> /code 创建 src/app/api/tools/[slug]/route.ts,
  返回单个工具的详细信息,slug 不存在时返回 404

运行 seed:

npx tsx prisma/seed.ts

⏱ 当前用时:12分钟

第13-20分钟:构建核心 UI 组件

> /code 创建 src/components/ToolCard.tsx,
  展示工具卡片:Logo、名称、描述(截断至2行)、分类标签、评分星级、
  定价徽章。点击跳转到 /tools/[slug]。使用 Tailwind CSS,
  带 hover 动画效果。
> /code 创建 src/components/CategoryFilter.tsx,
  横向滚动的分类筛选条,支持 "全部"、"AI对话"、"AI图像" 等分类,
  当前选中分类高亮显示,点击触发 onCategoryChange 回调。
> /code 创建 src/components/SearchBar.tsx,
  带搜索图标的输入框,300ms防抖,
  输入框右侧有清除按钮,触发 onSearch 回调。

⏱ 当前用时:20分钟

组件构建过程

第21-26分钟:构建页面

> /code 创建 src/app/page.tsx(首页),
  使用 SearchBar 和 CategoryFilter 组件,
  通过 fetch 调用 /api/tools 获取数据,
  展示 ToolCard 网格(3列桌面端,2列平板,1列手机),
  搜索和筛选实时更新结果,无结果时显示空状态插图。
> /code 创建 src/app/tools/[slug]/page.tsx(工具详情页),
  展示工具完整信息:大 Logo、名称、评分、标签列表、
  详细描述、访问官网按钮,侧边栏展示相关工具推荐。
  使用 Next.js 的 generateMetadata 生成 SEO 元数据。

⏱ 当前用时:26分钟

第27-28分钟:遇到问题并修复

运行 npm run dev 后发现页面报错:

> 运行项目出现错误:
  Error: PrismaClient is not able to run in edge runtime.
  Please use PrismaClient with edge runtime support.
  at /api/tools/route.ts:5
🔍 Diagnosing...

Issue: Next.js App Router 的 API Routes 默认使用 Edge Runtime,
       而标准 PrismaClient 不支持 Edge Runtime。

Fix: 在 API Route 文件顶部添加 Runtime 声明,切换到 Node.js Runtime

// 在 route.ts 文件顶部添加:
export const runtime = 'nodejs';

? Apply fix to both route files? (Y/n)

一分钟解决问题!

⏱ 当前用时:28分钟

第29-30分钟:完善细节

> /code 为整个应用添加一个 Navbar 组件,包含 Logo、
  导航链接(首页、分类、关于),响应式汉堡菜单,
  并更新 src/app/layout.tsx 引入 Navbar。
> /code 为所有页面添加 Loading 骨架屏,
  使用 Tailwind 的 animate-pulse 效果

⏱ 当前用时:30分钟 ✅

最终效果展示

npm run dev

打开 http://localhost:3000,你将看到:

  • 首页:10个工具卡片整齐排列,搜索框和分类筛选正常工作
  • 详情页:完整的工具信息展示,附带相关工具推荐
  • 响应式:在手机浏览器中打开,自动适配移动端布局

最终项目截图

代码统计

通过 OpenClaw,30分钟内我们完成了:

文件 行数 生成方式
prisma/schema.prisma 25 AI生成
prisma/seed.ts 80 AI生成
src/app/api/tools/route.ts 45 AI生成
src/app/api/tools/[slug]/route.ts 35 AI生成
src/components/ToolCard.tsx 65 AI生成
src/components/CategoryFilter.tsx 55 AI生成
src/components/SearchBar.tsx 40 AI生成
src/app/page.tsx 90 AI生成
src/app/tools/[slug]/page.tsx 110 AI生成
src/components/Navbar.tsx 70 AI生成
合计 615行 全部AI生成

常见问题

Q:AI 生成的代码质量如何保证?

A:始终对生成的代码进行 Review,特别注意安全相关代码(如数据库查询、用户输入处理)。OpenClaw 生成的代码是起点,你需要根据实际需求调整。

Q:30分钟能完成的项目能上生产吗?

A:本教程的项目缺少用户认证、错误边界处理、完整的测试覆盖等,距离生产级应用还有距离。但这个框架足以作为原型演示或个人项目。

Q:如何处理 OpenClaw 生成的代码与现有代码风格不一致的问题?

A:在 .openclaw 文件中配置详细的系统提示,说明项目的代码规范。参见"OpenClaw 高级技巧"教程。

下一步

本教程展示了 OpenClaw 在全栈项目开发中的强大能力。建议继续学习:

  • OpenClaw 高级技巧:自定义提示词和多文件编辑
  • OpenClaw Git 集成:为项目添加规范的版本管理

相关推荐