当前位置:首页 > 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):

<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):

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

构建命令:

vue实现信息发布系统

npm run build

分享给朋友:

相关文章

vue实现下拉框删除

vue实现下拉框删除

Vue 实现下拉框删除功能 在Vue中实现下拉框的删除功能通常涉及以下步骤: 数据绑定与渲染 在Vue组件中定义数据数组用于存储下拉框选项: data() { return { op…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

javascript实现vue

javascript实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,主要包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化的实现示例。 数据响应式系统 通过 Object.de…

vue 实现工具

vue 实现工具

Vue 实现工具的方法 使用 Vue 实现工具功能可以通过多种方式完成,具体取决于工具的类型和需求。以下是几种常见的方法: 组件化实现 创建一个独立的 Vue 组件来封装工具功能。例如,实现一个计…

vue实现menu

vue实现menu

Vue 实现 Menu 的方法 使用 Element UI 的 Menu 组件 Element UI 提供了现成的 Menu 组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用…