实战:从零搭建一个博客系统(下)
阶段目标
把上篇的静态博客升级为全栈应用:
- 文章数据存储在 Supabase 数据库
- 支持用户注册和登录
- 登录后可以发布、编辑文章
第一步:配置 Supabase
1. 创建 Supabase 项目
访问 supabase.com → 创建项目 → 获取 API URL 和 anon key
2. 创建数据表
在 Supabase SQL Editor 中执行:
CREATE TABLE posts (
id BIGSERIAL PRIMARY KEY,
title TEXT NOT NULL,
content TEXT NOT NULL,
excerpt TEXT,
user_id UUID REFERENCES auth.users,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
3. 安装客户端
npm install @supabase/supabase-js
4. 创建 Supabase 客户端
创建 src/lib/supabase.js:
import { createClient } from '@supabase/supabase-js';
export const supabase = createClient(
import.meta.env.VITE_SUPABASE_URL,
import.meta.env.VITE_SUPABASE_ANON_KEY
);
创建 .env 文件:
VITE_SUPABASE_URL=https://xxx.supabase.co
VITE_SUPABASE_ANON_KEY=xxx
第二步:从数据库读取文章
修改 Home.vue,告诉 AI:
“把 Home.vue 中的硬编码文章数据改为从 Supabase 读取。使用 onMounted 时获取数据,用 ref 存储。显示加载中状态和错误状态。”
AI 会生成类似这样的代码:
<script setup>
import { ref, onMounted } from 'vue';
import { supabase } from '../lib/supabase';
const posts = ref([]);
const loading = ref(true);
const error = ref(null);
onMounted(async () => {
try {
const { data } = await supabase
.from('posts')
.select('*')
.order('created_at', { ascending: false });
posts.value = data;
} catch (e) {
error.value = e.message;
} finally {
loading.value = false;
}
});
</script>
第三步:添加用户认证
告诉 AI:
“给博客加上 Supabase Auth:顶部导航栏显示登录/注册按钮,用户登录后显示头像和用户名。用 Supabase 的 email 认证。“
登录组件
<script setup>
import { ref } from 'vue';
import { supabase } from '../lib/supabase';
const email = ref('');
const password = ref('');
async function signIn() {
const { error } = await supabase.auth.signInWithPassword({
email: email.value,
password: password.value,
});
}
</script>
第四步:发布文章
创建发布页面,登录后才能访问。告诉 AI:
“创建一个 NewPost.vue 页面,包含标题输入框、内容文本框(用 textarea)、提交按钮。提交时把数据插入到 Supabase 的 posts 表。只有登录用户才能访问此页面。“
第五步:部署上线
前端部署到 Vercel
npm install -g vercel
vercel
或部署到 Netlify
直接把 GitHub 仓库导入 Netlify,自动部署。
全栈博客的技术架构
用户浏览器
↓
Vue 3 前端 (Vercel)
↓
Supabase API
↓
PostgreSQL 数据库
你完成了一个全栈项目!
这个博客项目包含了你需要掌握的所有核心技能:
- ✅ 前端:Vue 3 + Vue Router
- ✅ 后端:Supabase API
- ✅ 数据库:PostgreSQL
- ✅ 认证:Supabase Auth
- ✅ 部署:Vercel
下一篇我们聊聊如何把项目部署到各种平台上。