当前位置:首页 > VUE

vue实现发表博客

2026-02-17 16:59:26VUE

Vue 实现发表博客功能

前端部分(Vue.js)

安装必要依赖(如需要)

npm install axios vue-router

创建博客发布组件(BlogEditor.vue)

<template>
  <div class="blog-editor">
    <h3>发布新博客</h3>
    <form @submit.prevent="submitBlog">
      <div class="form-group">
        <label>标题</label>
        <input v-model="blog.title" type="text" required>
      </div>
      <div class="form-group">
        <label>内容</label>
        <textarea v-model="blog.content" rows="10" required></textarea>
      </div>
      <button type="submit">发布</button>
    </form>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      blog: {
        title: '',
        content: ''
      }
    }
  },
  methods: {
    async submitBlog() {
      try {
        const response = await axios.post('/api/blogs', this.blog);
        alert('博客发布成功');
        this.$router.push('/blogs');
      } catch (error) {
        console.error('发布失败:', error);
      }
    }
  }
}
</script>

配置路由(router/index.js)

import { createRouter, createWebHistory } from 'vue-router'
import BlogEditor from '../components/BlogEditor.vue'

const routes = [
  {
    path: '/blogs/new',
    component: BlogEditor
  }
]

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

export default router

后端部分(Node.js示例)

安装必要依赖

npm install express body-parser cors

创建简单API服务(server.js)

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');

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

let blogs = [];

app.post('/api/blogs', (req, res) => {
  const newBlog = {
    id: Date.now(),
    title: req.body.title,
    content: req.body.content,
    createdAt: new Date()
  };
  blogs.push(newBlog);
  res.status(201).json(newBlog);
});

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

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

数据库集成(可选MongoDB)

安装Mongoose

npm install mongoose

修改server.js连接数据库

const mongoose = require('mongoose');

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

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

const Blog = mongoose.model('Blog', blogSchema);

app.post('/api/blogs', async (req, res) => {
  try {
    const blog = new Blog(req.body);
    await blog.save();
    res.status(201).json(blog);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

富文本编辑器集成(如需要)

安装vue-quill编辑器

npm install vue-quill@beta @vueup/vue-quill@beta

修改BlogEditor.vue

<template>
  <div>
    <QuillEditor v-model:content="blog.content" contentType="html" />
  </div>
</template>

<script>
import { QuillEditor } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css';

export default {
  components: { QuillEditor }
}
</script>

用户认证(可选)

添加登录验证中间件

// server.js
const authenticate = (req, res, next) => {
  if (!req.headers.authorization) {
    return res.status(401).json({ error: '未授权' });
  }
  next();
};

app.post('/api/blogs', authenticate, async (req, res) => {
  // 原有代码
});

前端添加Authorization头

vue实现发表博客

// BlogEditor.vue
axios.post('/api/blogs', this.blog, {
  headers: {
    'Authorization': `Bearer ${localStorage.getItem('token')}`
  }
})

标签: 博客vue
分享给朋友:

相关文章

vue点击实现排序

vue点击实现排序

实现点击排序的方法 在Vue中实现点击排序功能,可以通过以下几种方式完成: 使用计算属性结合排序方法 定义一个响应式数据存储排序状态,通过计算属性动态返回排序后的数组。点击事件切换排序状态。 d…

vue前端实现打印功能

vue前端实现打印功能

使用Vue实现前端打印功能 在Vue项目中实现打印功能可以通过多种方式完成,以下是几种常见的方法: 使用window.print()方法 这是最简单的打印方式,直接调用浏览器的打印功能。 meth…

vue实现上移下移插件

vue实现上移下移插件

实现上移下移功能的 Vue 插件 在 Vue 中实现列表项的上移和下移功能,可以通过自定义指令或组件封装的方式完成。以下是两种常见实现方式: 基于数组操作的通用方法 通过操作数组索引实现元素位置交换…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…

vue实现语音

vue实现语音

Vue 实现语音功能的方法 使用 Web Speech API Vue 可以结合 Web Speech API 实现语音识别和合成功能。Web Speech API 包含 SpeechRecognit…

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Desi…