返回

全栈个人博客:Vue 3、Node.js和MongoDB从入门到精通

前端

构建全栈个人博客:使用Vue 3、Node.js和MongoDB打造

使用最新的技术打造你的在线平台

在当今数字时代,拥有一个个人博客至关重要,它可以让你分享你的想法、专业知识和经验。全栈博客让你完全控制你的内容和设计,提供更多的定制性和灵活性。在本博客中,我们将指导你使用Vue 3、Node.js、MongoDB和UniApp从头开始构建一个全栈个人博客系统。

先决条件

在开始之前,确保你已经安装了以下软件:

  • Node.js 16+
  • npm或Yarn包管理器
  • MongoDB
  • Visual Studio Code或你喜欢的代码编辑器

项目结构

我们的项目将包含以下目录和文件:

  • client/
    • src/
    • public/
    • package.json
  • server/
    • src/
    • package.json
  • .gitignore
  • package.json

步骤 1:搭建Vue 3前端

  1. 创建一个新的Vue 3项目:
vue create client
  1. 安装UniApp CLI:
npm install -g uniapp-cli
  1. 在client目录中,运行:
uniapp create blog

步骤 2:搭建Node.js和MongoDB后端

  1. 创建一个新的Node.js项目:
mkdir server
cd server
npm init -y
  1. 安装必要的依赖项:
npm install express mongoose body-parser
  1. 创建一个新的MongoDB数据库:
mongo
use blog
  1. 创建一个新的集合:
db.createCollection("posts")

步骤 3:连接前端和后端

  1. 在client/package.json中,添加以下代码:
"proxy": "http://localhost:3000"
  1. 在server/server.js中,添加以下代码:
const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");

const app = express();

app.use(bodyParser.json());

mongoose.connect("mongodb://localhost:27017/blog", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const PostSchema = new mongoose.Schema({
  title: String,
  content: String,
});

const Post = mongoose.model("Post", PostSchema);

app.get("/posts", async (req, res) => {
  const posts = await Post.find();
  res.json(posts);
});

app.post("/posts", async (req, res) => {
  const post = new Post(req.body);
  await post.save();
  res.json(post);
});

app.listen(3000);

步骤 4:开发博客前端

  1. 在client/src/main.js中,添加以下代码:
import Vue from "vue";
import App from "./App.vue";
import router from "./router";

Vue.config.productionTip = false;

new Vue({
  router,
  render: (h) => h(App),
}).$mount("#app");
  1. 在client/src/App.vue中,添加以下代码:
<template>
  <div id="app">
    <nav>
      <router-link to="/">Home</router-link>
      <router-link to="/about">About</router-link>
      <router-link to="/posts">Posts</router-link>
    </nav>
    <router-view/>
  </div>
</template>

<script>
export default {
  name: "App",
};
</script>

<style>
#app {
  font-family: Arial, Helvetica, sans-serif;
}
</style>
  1. 在client/src/router/index.js中,添加以下代码:
import Vue from "vue";
import VueRouter from "vue-router";
import Home from "../views/Home.vue";
import About from "../views/About.vue";
import Posts from "../views/Posts.vue";

Vue.use(VueRouter);

const routes = [
  {
    path: "/",
    name: "Home",
    component: Home,
  },
  {
    path: "/about",
    name: "About",
    component: About,
  },
  {
    path: "/posts",
    name: "Posts",
    component: Posts,
  },
];

const router = new VueRouter({
  mode: "history",
  base: process.env.BASE_URL,
  routes,
});

export default router;
  1. 在client/src/views/Posts.vue中,添加以下代码:
<template>
  <div>
    <h1>Posts</h1>
    <ul>
      <li v-for="post in posts" :key="post._id">
        <router-link :to="`/posts/${post._id}`">{{ post.title }}</router-link>
      </li>
    </ul>
  </div>
</template>

<script>
import axios from "axios";

export default {
  name: "Posts",
  data() {
    return {
      posts: [],
    };
  },
  created() {
    axios.get("/posts").then((res) => {
      this.posts = res.data;
    });
  },
};
</script>

<style>
</style>
  1. 在client/src/views/Post.vue中,添加以下代码:
<template>
  <div>
    <h1>{{ post.title }}</h1>
    <p>{{ post.content }}</p>
  </div>
</template>

<script>
import axios from "axios";

export default {
  name: "Post",
  props: ["id"],
  data() {
    return {
      post: null,
    };
  },
  created() {
    axios.get(`/posts/${this.id}`).then((res) => {
      this.post = res.data;
    });
  },
};
</script>

<style>
</style>

步骤 5:运行项目

  1. 在client目录中,运行:
npm run serve
  1. 在server目录中,运行:
node server.js
  1. 打开浏览器,访问 http://localhost:8080,你应该可以看到你的博客。

结论

通过遵循本指南,你已经成功构建了一个功能齐全的全栈个人博客。你可以根据你的需要进一步定制它。继续探索更多功能,例如用户注册、登录和评论,以提升你的博客体验。

常见问题解答

  1. 为什么我需要一个全栈博客?
    全栈博客提供完全控制,让你可以定制设计和内容,实现更高的灵活性。

  2. Vue 3和Node.js有什么优势?
    Vue 3是一个强大的前端框架,具有快速渲染和响应式状态管理功能。Node.js是一个高效的服务器端平台,适合构建API和实时应用程序。

  3. MongoDB如何用于博客?
    MongoDB是一个文档型数据库,非常适合存储和检索博客文章等非结构化数据。

  4. UniApp如何简化开发过程?
    UniApp是一个跨平台框架,允许你使用Vue.js代码同时构建iOS和Android应用程序。

  5. 如何维护和更新我的博客?
    维护你的博客需要定期添加新内容、更新现有文章并监控其性能。使用版本控制系统(如Git)管理代码变更很重要。