从零搭建一套前后端分离的博客系统(Node.js + Vue3 + MongoDB)

在现代 Web 项目中,前后端分离的架构已经成为主流选择。本篇文章将带你从零开始,构建一个完整的博客系统,涵盖前后端架构设计、数据库建模、接口开发与前端页面集成,帮助你更全面地掌握全栈开发技能。


📌 技术栈选型

  • 前端框架:Vue3 + Vite + Element Plus
  • 后端框架:Express + Node.js
  • 数据库:MongoDB + Mongoose
  • 接口设计:RESTful API
  • 工具链:Postman、Nodemon、MongoDB Compass

🗂 项目结构预览

perl 复制代码
perl
复制编辑
blog-system/
├── client/         # 前端项目(Vue3)
└── server/         # 后端项目(Node.js + MongoDB)

🧱 后端项目搭建(Node.js)

1. 初始化项目

bash 复制代码
bash
复制编辑
mkdir server && cd server
npm init -y
npm install express mongoose cors body-parser

2. 建立数据库连接

php 复制代码
js
复制编辑
// db.js
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/blog', {
  useNewUrlParser: true,
  useUnifiedTopology: true
})

3. 创建数据模型(Mongoose)

javascript 复制代码
js
复制编辑
// models/Post.js
const mongoose = require('mongoose')

const PostSchema = new mongoose.Schema({
  title: String,
  content: String,
  createdAt: {
    type: Date,
    default: Date.now
  }
})

module.exports = mongoose.model('Post', PostSchema)

4. 搭建基础接口

javascript 复制代码
js
复制编辑
// server.js
const express = require('express')
const mongoose = require('mongoose')
const cors = require('cors')
const Post = require('./models/Post')

mongoose.connect('mongodb://localhost:27017/blog')

const app = express()
app.use(cors())
app.use(express.json())

// 获取文章列表
app.get('/api/posts', async (req, res) => {
  const posts = await Post.find().sort({ createdAt: -1 })
  res.json(posts)
})

// 创建新文章
app.post('/api/posts', async (req, res) => {
  const newPost = await Post.create(req.body)
  res.json(newPost)
})

app.listen(3000, () => console.log('Server running on http://localhost:3000'))

🖼 前端项目搭建(Vue3 + Vite)

sql 复制代码
bash
复制编辑
npm create vite@latest client --template vue
cd client
npm install axios element-plus

示例页面:文章列表

xml 复制代码
vue
复制编辑
<template>
  <el-container>
    <el-main>
      <el-card v-for="post in posts" :key="post._id" class="mb-4">
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
      </el-card>
    </el-main>
  </el-container>
</template>

<script setup>
import { onMounted, ref } from 'vue'
import axios from 'axios'

const posts = ref([])

onMounted(async () => {
  const res = await axios.get('http://localhost:3000/api/posts')
  posts.value = res.data
})
</script>

🚀 页面扩展建议

  • ✅ 添加富文本编辑器(如:quill、wangEditor)
  • 🔐 添加用户认证模块(JWT)
  • 🧩 增加评论、标签、分类等功能
  • 📦 添加 markdown 支持,适配写作体验

✅ 项目总结

这个简单的博客系统演示了从数据库建模到 RESTful 接口,再到 Vue3 前端集成的全过程,是一个很适合作为全栈入门的实战项目。同时,它也为更复杂的后台管理系统打下了良好的架构基础。

相关推荐
码事漫谈2 小时前
智能体颠覆教育行业调研报告:英语、编程、语文、数学学科应用分析
后端
蓝-萧2 小时前
使用Docker构建Node.js应用的详细指南
java·后端
码事漫谈2 小时前
《C语言点滴》——笑着入门,扎实成长
后端
Tony Bai2 小时前
【Go模块构建与依赖管理】09 企业级实践:私有仓库与私有 Proxy
开发语言·后端·golang
咖啡教室3 小时前
每日一个计算机小知识:ICMP
后端·网络协议
间彧3 小时前
OpenStack在混合云架构中通常扮演什么角色?
后端
咖啡教室3 小时前
每日一个计算机小知识:IGMP
后端·网络协议
间彧3 小时前
云原生技术栈中的核心组件(如Kubernetes、Docker)具体是如何协同工作的?
后端
清空mega3 小时前
从零开始搭建 flask 博客实验(3)
后端·python·flask
努力的小郑3 小时前
Elasticsearch 避坑指南:我在项目中总结的 14 条实用经验
后端·elasticsearch·性能优化