当前位置:首页 > VUE

vue 实现blog

2026-01-07 08:09:57VUE

Vue 实现博客的基本步骤

使用 Vue 实现博客可以分为前端和后端两部分,前端使用 Vue.js 框架,后端可以选择 Node.js、Python 或其他服务端语言。以下是一个基于 Vue 的博客实现方案。

前端实现

项目初始化 使用 Vue CLI 或 Vite 初始化项目:

npm create vue@latest vue-blog
cd vue-blog
npm install

安装必要依赖 安装路由、状态管理和 UI 库:

npm install vue-router pinia element-plus

路由配置src/router/index.js 中配置路由:

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import PostList from '../views/PostList.vue'
import PostDetail from '../views/PostDetail.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/posts', component: PostList },
  { path: '/posts/:id', component: PostDetail }
]

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

export default router

状态管理 使用 Pinia 管理博客文章状态:

// src/stores/postStore.js
import { defineStore } from 'pinia'

export const usePostStore = defineStore('post', {
  state: () => ({
    posts: []
  }),
  actions: {
    async fetchPosts() {
      const response = await fetch('/api/posts')
      this.posts = await response.json()
    }
  }
})

页面组件 创建博客列表和详情页组件:

<!-- src/views/PostList.vue -->
<template>
  <div>
    <h1>博客文章</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 setup>
import { usePostStore } from '@/stores/postStore'
import { storeToRefs } from 'pinia'

const postStore = usePostStore()
const { posts } = storeToRefs(postStore)
postStore.fetchPosts()
</script>

后端实现

简单 API 服务 使用 Express 创建后端服务:

npm install express body-parser

创建 server.js

const express = require('express')
const app = express()
const bodyParser = require('body-parser')

app.use(bodyParser.json())

let posts = [
  { id: 1, title: '第一篇博客', content: '这是第一篇博客的内容' },
  { id: 2, title: '第二篇博客', content: '这是第二篇博客的内容' }
]

app.get('/api/posts', (req, res) => {
  res.json(posts)
})

app.get('/api/posts/:id', (req, res) => {
  const post = posts.find(p => p.id === parseInt(req.params.id))
  res.json(post)
})

app.listen(3000, () => {
  console.log('Server running on port 3000')
})

前后端连接

配置代理vite.config.js 中配置代理:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true
      }
    }
  }
})

部署准备

构建前端

npm run build

部署后端 将构建后的前端文件放入后端静态文件夹:

app.use(express.static('dist'))

扩展功能

添加 Markdown 支持 安装 marked 库:

npm install marked

在组件中使用:

import { marked } from 'marked'
const htmlContent = marked(post.content)

添加评论功能 创建评论组件和 API 接口:

// 后端添加评论路由
app.post('/api/posts/:id/comments', (req, res) => {
  const post = posts.find(p => p.id === parseInt(req.params.id))
  post.comments = post.comments || []
  post.comments.push(req.body)
  res.status(201).json(post)
})

注意事项

  1. 生产环境需要配置数据库替代内存存储
  2. 添加用户认证保护管理接口
  3. 实现文章分类和标签功能
  4. 考虑使用 SSR 改善 SEO
  5. 添加缓存机制提高性能

这个实现方案提供了基本功能,可以根据需求进一步扩展和完善。

vue 实现blog

标签: vueblog
分享给朋友:

相关文章

vue 实现目录

vue 实现目录

Vue 实现目录的方法 在 Vue 项目中实现目录功能,可以通过以下几种方式实现,具体取决于需求和技术栈。 使用 Vue Router 实现路由目录 Vue Router 是 Vue.js 的官方路…

项目基于vue实现

项目基于vue实现

基于Vue实现项目的关键方法 搭建基础环境 安装Node.js和npm/yarn,确保开发环境具备运行Vue的能力。通过Vue CLI快速初始化项目结构,选择所需配置(如Babel、Router、Vu…

vue查看更多怎么实现

vue查看更多怎么实现

实现 Vue 的“查看更多”功能 数据截取与显示控制 通过 v-if 或 v-show 控制内容的显示与隐藏。初始状态下只显示部分内容,点击“查看更多”后展开完整内容。 <template&g…

vue如何实现到期提醒

vue如何实现到期提醒

实现 Vue 到期提醒功能 使用计算属性计算剩余时间 在 Vue 组件中定义一个计算属性,计算目标日期与当前日期的差值。通过 Date 对象获取时间戳并计算剩余天数或小时数。 computed:…

vue实现微博印象

vue实现微博印象

实现微博印象功能的核心思路 微博印象功能通常指用户发布微博后,系统自动分析文本内容并提取关键词或标签,以可视化形式展示。Vue实现该功能需要结合文本分析、关键词提取和前端渲染技术。 文本分析与关键…

vue 实现简单登陆

vue 实现简单登陆

以下是一个使用 Vue 3 实现的简单登录功能示例,包含表单验证和基础交互逻辑: 创建 Vue 组件 <template> <div class="login-containe…