从零搭建个人博客系统:Vue3 + Node.js + MongoDB全栈实践

关梦尘 2025-05-07 23:48:22


 
在数字化时代,搭建一个属于自己的博客系统不仅是技术能力的体现,更是记录生活与分享知识的绝佳方式。本文将详细介绍如何使用Vue3作为前端框架、Node.js作为后端服务、MongoDB作为数据库,搭建一个完整且具备基础功能的个人博客系统。
 
一、技术栈选择
 
1. Vue3:新一代渐进式JavaScript框架,响应式系统更高效,Composition API让代码组织更灵活,适合构建交互丰富的用户界面。
2. Node.js:基于Chrome V8引擎的JavaScript运行时,能实现高效的I/O操作,便于快速搭建后端服务。
3. MongoDB:非关系型数据库,采用文档型存储结构,对数据格式的兼容性强,特别适合博客这类内容灵活多变的场景。
 
二、环境搭建
 
1. 安装Node.js与MongoDB
 
- Node.js:从官网下载对应系统的安装包,安装完成后,在终端输入 node -v 和 npm -v 验证是否安装成功。
- MongoDB:在官网下载社区版安装包,安装完成后,启动MongoDB服务,可通过 mongo 命令进入数据库交互界面。
 
2. 创建项目目录
 
在终端执行以下命令:
 
mkdir my-blog-project
cd my-blog-project
 
 
三、后端开发
 
1. 初始化Node.js项目
 
在项目目录下执行:
 
npm init -y
 
 
安装所需依赖:
 
npm install express mongoose cors dotenv
 
 
2. 配置Express与数据库连接
 
创建 server.js 文件:
 
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const dotenv = require('dotenv');

dotenv.config();
const app = express();
const port = process.env.PORT || 3000;

// 跨域资源共享配置
app.use(cors());
// 解析JSON数据
app.use(express.json());

// 连接MongoDB
mongoose.connect(process.env.MONGO_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => console.log('MongoDB Connected'))
.catch(err => console.error(err));

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});
 
 
3. 定义博客文章模型
 
创建 models/Post.js :
 
const mongoose = require('mongoose');

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

module.exports = mongoose.model('Post', postSchema);
 
 
4. 编写API接口
 
在 server.js 中添加接口:
 
const Post = require('./models/Post');

// 创建文章
app.post('/api/posts', async (req, res) => {
  try {
    const newPost = new Post(req.body);
    const savedPost = await newPost.save();
    res.status(201).json(savedPost);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
});

// 获取所有文章
app.get('/api/posts', async (req, res) => {
  try {
    const posts = await Post.find();
    res.json(posts);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
});
 
 
四、前端开发
 
1. 创建Vue3项目
 
确保已安装 @vue/cli ,执行:
 
vue create my-blog-frontend
 
 
选择 Default (Vue 3 Preview) 创建项目。
 
2. 安装依赖
 
进入项目目录,安装 axios 用于HTTP请求:
 
npm install axios
 
 
3. 编写组件
 
在 src/components 目录下创建 PostList.vue :
 
<template>
  <div>
    <h1>我的博客</h1>
    <ul>
      <li v-for="post in posts" :key="post._id">
        <h2>{{ post.title }}</h2>
        <p>作者: {{ post.author }}</p >
        <p>{{ post.content }}</p >
      </li>
    </ul>
  </div>
</template>

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

export default {
  setup() {
    const posts = ref([]);

    const fetchPosts = async () => {
      try {
        const response = await axios.get('http://localhost:3000/api/posts');
        posts.value = response.data;
      } catch (error) {
        console.error('Error fetching posts:', error);
      }
    };

    onMounted(() => {
      fetchPosts();
    });

    return {
      posts
    };
  }
};
</script>
 
 
4. 路由配置
 
在 src/router/index.js 中配置路由:
 
import { createRouter, createWebHistory } from 'vue-router';
import PostList from '../components/PostList.vue';

const routes = [
  {
    path: '/',
    name: 'PostList',
    component: PostList
  }
];

const router = createRouter({
  history: createWebHistory(),
  routes
});

export default router;
 
 
五、部署与优化
 
1. 后端部署:可以使用 pm2 等进程管理工具将Node.js服务部署到服务器,也可以将后端代码部署到云服务平台如Heroku、AWS等。
2. 前端部署:通过 npm run build 打包Vue3项目,将生成的 dist 目录下的文件部署到Web服务器。
3. 优化:添加请求缓存、数据库索引优化、前端代码压缩等,提升系统性能。
 
通过以上步骤,一个基于Vue3 + Node.js + MongoDB的个人博客系统就搭建完成了。在实际开发过程中,还可以根据需求添加用户认证、评论功能、图片上传等更多特性。希望这篇文章能为你的全栈开发学习带来帮助,欢迎在评论区交流探讨!

...全文
27 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

118

社区成员

发帖
与我相关
我的任务
社区描述
这里专为新疆政法学院的探索者而建,英雄不问出处。起跑线是起点,热忱与坚持为加速器,无论bug缠身的项目,还是攻克的算法顿悟,每滴汗水皆被珍藏。执炬前行,终将照亮彼此峰顶,我们携手同行。
课程设计笔记经验分享 高校 新疆·图木舒克市
社区管理员
  • 雲中203
  • SHAO060706
  • Poeir_
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

英雄不问出处

试试用AI创作助手写篇文章吧