从零搭建一套前后端分离的博客系统(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 前端集成的全过程,是一个很适合作为全栈入门的实战项目。同时,它也为更复杂的后台管理系统打下了良好的架构基础。

相关推荐
parafeeee5 小时前
程序人生-Hello’s P2P
数据库·后端·asp.net
bug攻城狮6 小时前
Spring Boot应用内存占用分析与优化
java·jvm·spring boot·后端
今天你TLE了吗7 小时前
JVM学习笔记:第八章——执行引擎
java·jvm·笔记·后端·学习
XPoet7 小时前
AI 编程工程化:Rule——给你的 AI 员工立规矩
前端·后端·ai编程
韩立学长8 小时前
基于Springboot校园志愿者服务平台77pz7812(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
Java基基8 小时前
Spring让Java慢了30倍,JIT、AOT等让Java比Python快13倍,比C慢17%
java·开发语言·后端·spring
qq_12498707538 小时前
基于SpringBoot微信小程序的智能在线预约挂号系统(源码+论文+部署+安装)
spring boot·后端·微信小程序·毕业设计·计算机毕设·毕业设计源码
Victor3568 小时前
MongoDB(34)什么是聚合管道(Aggregation Pipeline)?
后端
Victor3568 小时前
MongoDB(35)聚合操作的常见阶段有哪些?
后端
追逐时光者9 小时前
2026年全面且实用的 Visual Studio 插件推荐,开发效率提升利器!
后端·visual studio