当前位置:首页 > VUE

vue实现信息发布系统

2026-01-20 17:10:58VUE

Vue 实现信息发布系统

项目初始化与基础配置

使用 Vue CLI 或 Vite 创建项目,安装必要依赖:

npm create vue@latest info-publish-system
cd info-publish-system
npm install vue-router pinia axios element-plus

配置路由(src/router/index.js):

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'

const routes = [
  { path: '/', component: HomeView },
  { path: '/publish', component: () => import('../views/PublishView.vue') },
  { path: '/list', component: () => import('../views/ListView.vue') }
]

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

export default router

状态管理设计

使用 Pinia 管理全局状态(src/stores/infoStore.js):

import { defineStore } from 'pinia'

export const useInfoStore = defineStore('info', {
  state: () => ({
    infoList: [],
    currentInfo: null
  }),
  actions: {
    async fetchInfoList() {
      const res = await axios.get('/api/info')
      this.infoList = res.data
    },
    async publishInfo(infoData) {
      await axios.post('/api/info', infoData)
      this.fetchInfoList()
    }
  }
})

信息发布组件实现

创建发布表单组件(src/components/PublishForm.vue):

vue实现信息发布系统

<template>
  <el-form :model="form" label-width="80px">
    <el-form-item label="标题">
      <el-input v-model="form.title"></el-input>
    </el-form-item>
    <el-form-item label="内容">
      <el-input v-model="form.content" type="textarea" rows="5"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="handleSubmit">发布</el-button>
    </el-form-item>
  </el-form>
</template>

<script setup>
import { ref } from 'vue'
import { useInfoStore } from '@/stores/infoStore'

const form = ref({
  title: '',
  content: ''
})
const infoStore = useInfoStore()

const handleSubmit = () => {
  infoStore.publishInfo(form.value)
  form.value = { title: '', content: '' }
}
</script>

信息列表展示

实现信息列表组件(src/components/InfoList.vue):

<template>
  <el-table :data="infoStore.infoList" style="width: 100%">
    <el-table-column prop="title" label="标题" width="180" />
    <el-table-column prop="content" label="内容" />
    <el-table-column prop="createdAt" label="发布时间" width="180" />
  </el-table>
</template>

<script setup>
import { useInfoStore } from '@/stores/infoStore'
import { onMounted } from 'vue'

const infoStore = useInfoStore()
onMounted(() => infoStore.fetchInfoList())
</script>

API 接口封装

创建 API 请求模块(src/api/index.js):

vue实现信息发布系统

import axios from 'axios'

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

export default {
  getInfoList: () => instance.get('/info'),
  publishInfo: (data) => instance.post('/info', data)
}

样式与布局优化

添加全局样式(src/assets/main.css):

.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px;
}
.card {
  margin-bottom: 20px;
  box-shadow: 0 2px 12px rgba(0,0,0,0.1);
}

功能扩展建议

  1. 添加富文本编辑器(如 tiptap 或 quill)增强内容编辑能力
  2. 实现信息分类和标签系统
  3. 增加用户权限管理模块
  4. 添加信息审核流程
  5. 实现信息搜索和筛选功能

部署准备

配置生产环境变量(.env.production):

VITE_API_BASE_URL=https://production-api.example.com

构建命令:

npm run build

分享给朋友:

相关文章

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue插槽实现

vue插槽实现

插槽的基本概念 Vue插槽(Slot)是一种内容分发机制,允许父组件向子组件传递模板片段,子组件通过<slot>标签定义接收位置。插槽的核心作用是增强组件的灵活性和复用性。 默认插槽 子…

vue实现分步

vue实现分步

Vue 实现分步功能 在 Vue 中实现分步功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 通过动态组件切换不同的步骤内容,结合 v-if 或 component 标签实现分步逻辑。…

vue实现搜索查询

vue实现搜索查询

Vue 实现搜索查询的方法 双向绑定实现实时搜索 在Vue中可以通过v-model绑定输入框的值,结合计算属性或watch监听输入变化实现实时搜索。 <template> <i…

vue实现特效轮播

vue实现特效轮播

Vue实现特效轮播的方法 使用Vue实现轮播效果可以通过多种方式完成,以下是几种常见的实现方法。 使用Vue和CSS动画 通过Vue的动态绑定和CSS动画结合,可以实现平滑的轮播效果。 &…

vue实现文字复制

vue实现文字复制

Vue 实现文字复制的几种方法 使用 Clipboard API 在 Vue 中可以通过调用浏览器的 Clipboard API 实现文字复制功能。该方法兼容现代浏览器,无需额外依赖。 method…