当前位置:首页 > VUE

用vue实现新闻更新

2026-02-21 01:26:32VUE

使用Vue实现新闻更新功能

安装Vue及相关依赖

确保已安装Node.js和npm/yarn,通过以下命令创建Vue项目:

vue create news-app
cd news-app
npm install axios vue-router

创建新闻列表组件

src/components下创建NewsList.vue文件,用于展示新闻列表:

<template>
  <div>
    <h3>新闻列表</h3>
    <ul>
      <li v-for="news in newsList" :key="news.id">
        {{ news.title }} - {{ news.date }}
        <button @click="editNews(news)">编辑</button>
        <button @click="deleteNews(news.id)">删除</button>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      newsList: []
    }
  },
  methods: {
    fetchNews() {
      // 这里替换为实际的API调用
      this.newsList = [
        { id: 1, title: '新闻标题1', content: '内容1', date: '2023-01-01' },
        { id: 2, title: '新闻标题2', content: '内容2', date: '2023-01-02' }
      ]
    },
    editNews(news) {
      this.$router.push(`/edit/${news.id}`)
    },
    deleteNews(id) {
      // 实现删除逻辑
      this.newsList = this.newsList.filter(news => news.id !== id)
    }
  },
  created() {
    this.fetchNews()
  }
}
</script>

创建新闻编辑组件

src/components下创建NewsEdit.vue文件:

<template>
  <div>
    <h3>编辑新闻</h3>
    <form @submit.prevent="saveNews">
      <input v-model="news.title" placeholder="标题" required>
      <textarea v-model="news.content" placeholder="内容" required></textarea>
      <input type="date" v-model="news.date" required>
      <button type="submit">保存</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      news: {
        id: null,
        title: '',
        content: '',
        date: ''
      }
    }
  },
  methods: {
    fetchNews(id) {
      // 根据ID获取新闻详情
      this.news = {
        id: id,
        title: `新闻标题${id}`,
        content: `新闻内容${id}`,
        date: '2023-01-01'
      }
    },
    saveNews() {
      // 实现保存逻辑
      this.$router.push('/')
    }
  },
  created() {
    const id = this.$route.params.id
    if (id) this.fetchNews(id)
  }
}
</script>

配置路由

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

import Vue from 'vue'
import Router from 'vue-router'
import NewsList from '../components/NewsList.vue'
import NewsEdit from '../components/NewsEdit.vue'

Vue.use(Router)

export default new Router({
  routes: [
    { path: '/', component: NewsList },
    { path: '/edit/:id', component: NewsEdit },
    { path: '/add', component: NewsEdit }
  ]
})

集成到主应用

修改src/App.vue文件:

<template>
  <div id="app">
    <router-link to="/">新闻列表</router-link> |
    <router-link to="/add">添加新闻</router-link>
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

实现API调用

在实际应用中,应该使用axios与后端API交互。在src目录下创建api/news.js

import axios from 'axios'

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

export default {
  getNews() {
    return api.get('/news')
  },
  getNewsById(id) {
    return api.get(`/news/${id}`)
  },
  createNews(news) {
    return api.post('/news', news)
  },
  updateNews(id, news) {
    return api.put(`/news/${id}`, news)
  },
  deleteNews(id) {
    return api.delete(`/news/${id}`)
  }
}

运行项目

启动开发服务器:

用vue实现新闻更新

npm run serve

这个实现包含了新闻列表展示、编辑和删除功能的基本框架。实际应用中需要根据具体需求调整UI样式,添加表单验证,并连接真实的后端API。

标签: 新闻vue
分享给朋友:

相关文章

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…

vue实现多选

vue实现多选

Vue 实现多选功能 在 Vue 中实现多选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定到一个数组,可以实现多选功能。适用于复选框组(…

vue 分页 实现

vue 分页 实现

Vue 分页实现方法 使用第三方库(如 Element UI) Element UI 提供了现成的分页组件 el-pagination,适合快速集成。 安装 Element UI: npm ins…

vue 实现穿透

vue 实现穿透

Vue 样式穿透的实现方法 在 Vue 中,样式穿透通常指在带有 scoped 属性的样式块中,强制影响子组件的样式。以下是几种常见的实现方式: 使用 >>> 或 /deep/ 选…

vue实现接口轮询

vue实现接口轮询

实现接口轮询的基本方法 在Vue中实现接口轮询通常通过setInterval或setTimeout结合异步请求完成。以下是一个基础实现示例: data() { return { poll…