作為 Java 后端開發(fā)者,你可能早已熟練掌握 Spring、MyBatis、Redis、Kafka 等各類技術(shù)棧,對(duì)數(shù)據(jù)庫(kù)、消息隊(duì)列、接口設(shè)計(jì)信手拈來(lái)。然而,面對(duì)“前后端分離”、“快速搭建”、“AI 工具集成”等新趨勢(shì),是否也有點(diǎn)心動(dòng)又擔(dān)憂“不是自己擅長(zhǎng)的領(lǐng)域”?
別怕,有了 CodeBuddy 這類 AI Flow 編程工具,它就像你身邊全天候的全棧搭檔,隨時(shí)補(bǔ)全你不會(huì)的部分,幫你快速搭建從 0 到 1 的產(chǎn)品原型。本文將結(jié)合 Vue 3 + Node.js 16.20.2,從架構(gòu)到開發(fā)落地,一步步帶你實(shí)現(xiàn)AI 工具導(dǎo)航網(wǎng)站
1?? 需求分析 & 原型設(shè)計(jì)
需解決以下核心功能:
首頁(yè)展示:AI 工具的 logo、名稱、簡(jiǎn)介、標(biāo)簽
分類瀏覽:按“圖像生成”、“寫作助手”、“編程助手”等標(biāo)簽分類
工具詳情頁(yè):展示工具介紹、官網(wǎng)鏈接、使用方法
搜索功能:按名稱/標(biāo)簽關(guān)鍵詞模糊搜索
收藏功能:本地收藏,無(wú)需登錄(可擴(kuò)展)
?? 原型工具建議:
低保真:用 Figma 或 Whimsical 畫一個(gè)卡片式?UI 即可
結(jié)構(gòu)草圖如下:
[搜索框]
[分類導(dǎo)航]
[工具卡片:logo + 名稱 + 簡(jiǎn)介 + 標(biāo)簽 + 收藏按鈕]
2?? 快速搭建前端框架(Vue 3 + Tailwind)
步驟一:創(chuàng)建 Vite 項(xiàng)目
npm create vite@latest ai-toolbox --template vuecdai-toolboxnpm install
然后在 VS Code 中打開項(xiàng)目文件夾,AI代碼助手將自動(dòng)分析項(xiàng)目結(jié)構(gòu)并提供代碼建議:

我已經(jīng)初步查看了項(xiàng)目結(jié)構(gòu),這是一個(gè)使用Vue 3、TypeScript和Vite的前端項(xiàng)目。目前項(xiàng)目處于初始狀態(tài),只包含基本的示例代碼。
當(dāng)前項(xiàng)目結(jié)構(gòu)
├── src │ ├── App.vue # 主應(yīng)用組件 │ ├── assets # 靜態(tài)資源目錄 │ ├── components # Vue組件目錄 │ │ └── HelloWorld.vue # 示例組件 │ ├── main.ts # 應(yīng)用入口文件 │ ├── style.css # 全局樣式 │ └── vite-env.d.ts # Vite環(huán)境類型聲明
技術(shù)棧
Vue 3.5.13 TypeScript Vite (構(gòu)建工具)
步驟二:配置 Tailwind CSS
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
作為多年資深級(jí) Javaer,一開始配置tailwindcss我是不熟悉的,這不就報(bào)錯(cuò)了:

還好有CodeBuddy幫助我們從零開始上手前端開發(fā):

重新npm run dev 后依舊報(bào)錯(cuò):

繼續(xù)貼上報(bào)錯(cuò)讓其優(yōu)化:

終于開發(fā)環(huán)境完全正常:

看看詳細(xì)配置:
tailwind.config.js
我們來(lái)咨詢配置文件具體影響:

/**@type{import('tailwindcss').Config} */exportdefault{content: [// 該配置對(duì) Tailwind 的 PurgeCSS 功能至關(guān)重要,它只會(huì)生成你實(shí)際在這些文件中使用的 CSS 類,大大減小了最終 CSS 文件的大小"./index.html",// 掃描項(xiàng)目根目錄下的 HTML 文件"./src/**/*.{vue,js,ts,jsx,tsx}",// 掃描 src 目錄及其所有子目錄中的 Vue、js、ts、JSX 和 TSX 文件],theme: {// 用于自定義 Tailwind 的默認(rèn)設(shè)計(jì)系統(tǒng)extend: {},// extend 對(duì)象允許你擴(kuò)展 Tailwind 的默認(rèn)主題,而不是完全替換它。目前這個(gè)對(duì)象是空的,表示使用 Tailwind 的默認(rèn)主題設(shè)置??稍谶@里添加自定義顏色、字體、間距、斷點(diǎn)等},plugins: [],// 允許你注冊(cè) Tailwind 插件,這些插件可以添加新的工具類、組件或基礎(chǔ)樣式。目前空,表示沒使用任何插件}
如想添加自定義顏色,可以這樣做:
theme:{extend:{colors:{'brand-blue':'#1992d4','brand-red':'#e53e3e',},},},
如果你想使用官方插件(如表單插件),可以這樣添加:
plugins:[require('@tailwindcss/forms'),],
在?src/style?中加入:
@tailwindbase;@tailwindcomponents;@tailwindutilities;
在?main.ts?引入?CSS:
import'./style.css'
步驟三:開發(fā)首頁(yè)組件
繼續(xù)指揮,讓CodeBuddy自覺發(fā)力,而不用親手寫一行代碼:
提供一個(gè)ToolCard.vue組件,然后在合適的位置(如pages/Home.vue)使用這個(gè)組件。
創(chuàng)建一個(gè)?components/ToolCard.vue:
<template>
? <div class="p-4 border rounded-xl shadow hover:shadow-lg transition">
? ? <img :src="tool.logo" class="w-16 h-16 object-contain" />
? ? <h2 class="font-bold text-lg">{{ tool.name }}</h2>
? ? <p class="text-sm text-gray-500">{{ tool.description }}</p>
? ? <div class="mt-2 flex flex-wrap gap-1">
? ? ? <span v-for="tag in tool.tags" :key="tag" class="text-xs bg-blue-100 text-blue-700 px-2 py-0.5 rounded">{{ tag }}</span>
? ? </div>
? </div>
</template>
<script setup lang="ts">
interface Tool {
? id: number
? name: string
? description: string
? logo: string
? tags: string[]
}
defineProps<{
? tool: Tool
}>()
</script>
在?pages/Home.vue?使用:
<ToolCard v-for="item in tools" :tool="item" :key="item.id" />
CodeBuddy 會(huì)自動(dòng)補(bǔ)全導(dǎo)入語(yǔ)句、類型、props,非常流暢?,F(xiàn)在應(yīng)該能看到一個(gè)包含三個(gè)工具卡片的頁(yè)面,每個(gè)卡片顯示名稱、描述、圖標(biāo)和標(biāo)簽:

我們來(lái)調(diào)整description在頁(yè)面左對(duì)齊顯示:

左對(duì)齊效果:

3?? 搭建 Node.js + Express 后端
在根目錄下創(chuàng)建?server/?文件夾:
cdservernpm init -ynpm install express mongoose cors
創(chuàng)建?index.js?并粘貼:
importexpressfrom'express'importcorsfrom'cors'importmongoosefrom'mongoose'constapp =express()app.use(cors())app.use(express.json())mongoose.connect('mongodb://localhost:27017/aitools')consttoolSchema =newmongoose.Schema({name:String,logo:String,description:String,tags: [String],link:String,})constTool= mongoose.model('Tool', toolSchema)app.get('/api/tools',async(req, res) => {constq = req.query.qconstfilter = q ? {name:newRegExp(q,'i') } : {}consttools =awaitTool.find(filter)? res.json(tools)})app.post('/api/tools',async(req, res) => {consttool =awaitTool.create(req.body)? res.json(tool)})app.listen(3000,() =>console.log('API running on http://localhost:3000'))
CodeBuddy?會(huì)自動(dòng)補(bǔ)充類型、提示語(yǔ)法錯(cuò)誤,代碼幾乎“寫一行成功一行”。
4?? 實(shí)現(xiàn)數(shù)據(jù)庫(kù)與數(shù)據(jù)初始化
docker-desktop 快速拉取一個(gè)可用的?MongoDB 鏡像開啟一個(gè)數(shù)據(jù)庫(kù)服務(wù):

用 MongoDB Compass 或命令行插入初始數(shù)據(jù)或用 VS Code 的 MongoDB 插件:

展開顯示出 tools 集合并右鍵:

新增兩條數(shù)據(jù):

5?? 前后端對(duì)接實(shí)現(xiàn)

啟動(dòng)前后端服務(wù)并打開頁(yè)面:

6?? 支持搜索參數(shù)

很快給出搜索框方案:

最終源碼在ai-toolbox:https://github.com/Code-Selector/ai-toolbox
本文轉(zhuǎn)載來(lái)源:JavaEdge? ?https://cloud.tencent.com/developer/article/2519778