当前位置:首页 > VUE

vue实现发表博客

2026-01-17 00:27:55VUE

Vue 实现发表博客功能

创建 Vue 项目

使用 Vue CLI 创建一个新项目,确保已安装 Node.js 和 npm/yarn。运行以下命令初始化项目:

vue create blog-app

安装必要依赖

在项目目录中安装 axios(用于 HTTP 请求)和 vue-router(用于页面路由):

npm install axios vue-router

设计博客表单组件

创建一个 BlogEditor.vue 组件,包含标题和内容的输入表单:

<template>
  <div class="blog-editor">
    <input v-model="title" placeholder="标题" />
    <textarea v-model="content" placeholder="内容"></textarea>
    <button @click="submitBlog">发布</button>
  </div>
</template>

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

配置路由

router/index.js 中设置路由,将 /post 路径映射到博客编辑组件:

import Vue from 'vue'
import Router from 'vue-router'
import BlogEditor from '../components/BlogEditor.vue'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/post',
      component: BlogEditor
    }
  ]
})

创建 API 服务

src/services/api.js 中定义博客发布接口:

import axios from 'axios'

const api = axios.create({
  baseURL: 'http://your-backend-api.com'
})

export const postBlog = (blogData) => {
  return api.post('/blogs', blogData)
}

集成到主应用

App.vue 中添加导航链接和路由视图:

<template>
  <div id="app">
    <nav>
      <router-link to="/post">写博客</router-link>
    </nav>
    <router-view/>
  </div>
</template>

后端接口对接

确保后端 API 能够接收 POST 请求并处理博客数据。典型 Node.js Express 后端接口示例:

app.post('/api/blogs', (req, res) => {
  const { title, content } = req.body
  // 存储到数据库
  res.status(201).json({ message: 'Blog created' })
})

表单验证增强

为博客表单添加基础验证逻辑,在 submitBlog 方法中加入:

if (!this.title.trim() || !this.content.trim()) {
  alert('标题和内容不能为空')
  return
}

样式优化

添加基础样式到 BlogEditor.vue 组件:

.blog-editor {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

input, textarea {
  display: block;
  width: 100%;
  margin-bottom: 15px;
  padding: 10px;
}

button {
  background: #42b983;
  color: white;
  border: none;
  padding: 10px 20px;
  cursor: pointer;
}

部署准备

构建生产环境版本并部署到服务器:

npm run build

将生成的 dist 文件夹内容上传到 Web 服务器。

vue实现发表博客

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

相关文章

vue实现横向导航

vue实现横向导航

vue实现横向导航的方法 使用Flex布局实现横向导航 在Vue中可以通过Flex布局快速实现横向导航。创建一个组件,使用display: flex和flex-direction: row属性使导航项…

vue实现列表显示

vue实现列表显示

Vue 实现列表显示的方法 在 Vue 中实现列表显示通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式。 基本列表渲染 通过 v-for 指令遍历数组,动态生成列…

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="bu…

vue实现继承语法糖

vue实现继承语法糖

在Vue中实现继承可以通过多种方式模拟类继承的效果,以下是常见的几种方法: 使用mixins实现逻辑复用 通过Vue的mixins机制共享组件选项,达到类似继承的效果: const Bas…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <t…

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-se…