当前位置:首页 > VUE

vue实现文章列表

2026-01-19 22:20:52VUE

Vue 实现文章列表

数据准备

在 Vue 中实现文章列表,通常需要一个数组存储文章数据。可以在组件的 data 中定义文章列表数据,或通过 API 从后端获取。

data() {
  return {
    articles: [
      { id: 1, title: 'Vue 入门', content: 'Vue 是一个渐进式框架...' },
      { id: 2, title: 'Vuex 状态管理', content: 'Vuex 是 Vue 的官方状态管理工具...' }
    ]
  }
}

如果从后端获取数据,可以使用 axiosfetch 发起请求:

methods: {
  fetchArticles() {
    axios.get('/api/articles')
      .then(response => {
        this.articles = response.data
      })
  }
},
created() {
  this.fetchArticles()
}

模板渲染

使用 v-for 指令循环渲染文章列表,并绑定文章数据到模板中。

<template>
  <div class="article-list">
    <div v-for="article in articles" :key="article.id" class="article-item">
      <h3>{{ article.title }}</h3>
      <p>{{ article.content }}</p>
    </div>
  </div>
</template>

样式优化

为文章列表添加样式,提升用户体验。可以使用 CSS 或预处理器(如 SCSS)美化列表。

.article-list {
  max-width: 800px;
  margin: 0 auto;
}

.article-item {
  padding: 16px;
  margin-bottom: 16px;
  border: 1px solid #eee;
  border-radius: 4px;
}

.article-item h3 {
  margin: 0 0 8px 0;
  color: #333;
}

.article-item p {
  margin: 0;
  color: #666;
}

分页功能

如果文章数量较多,可以添加分页功能。使用 v-pagination 组件(如 Element UI 的分页组件)或自定义分页逻辑。

<template>
  <div>
    <div class="article-list">
      <!-- 文章列表渲染 -->
    </div>
    <el-pagination
      @current-change="handlePageChange"
      :current-page="currentPage"
      :page-size="pageSize"
      :total="totalArticles"
      layout="prev, pager, next">
    </el-pagination>
  </div>
</template>

分页逻辑示例:

data() {
  return {
    currentPage: 1,
    pageSize: 10,
    totalArticles: 0,
    articles: []
  }
},
methods: {
  fetchArticles() {
    axios.get('/api/articles', {
      params: {
        page: this.currentPage,
        size: this.pageSize
      }
    }).then(response => {
      this.articles = response.data.list
      this.totalArticles = response.data.total
    })
  },
  handlePageChange(page) {
    this.currentPage = page
    this.fetchArticles()
  }
}

搜索与筛选

为文章列表添加搜索或筛选功能,提升交互性。可以通过绑定输入框和筛选逻辑实现。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索文章" @input="filterArticles" />
    <div class="article-list">
      <!-- 筛选后的文章列表 -->
    </div>
  </div>
</template>

筛选逻辑示例:

data() {
  return {
    searchQuery: '',
    allArticles: [],
    filteredArticles: []
  }
},
methods: {
  fetchArticles() {
    axios.get('/api/articles')
      .then(response => {
        this.allArticles = response.data
        this.filteredArticles = response.data
      })
  },
  filterArticles() {
    this.filteredArticles = this.allArticles.filter(article => {
      return article.title.includes(this.searchQuery) || 
             article.content.includes(this.searchQuery)
    })
  }
}

响应式优化

确保文章列表在不同设备上显示良好,可以通过响应式设计或媒体查询调整布局。

@media (max-width: 600px) {
  .article-list {
    padding: 0 10px;
  }
  .article-item {
    padding: 12px;
  }
}

vue实现文章列表

标签: 文章列表vue
分享给朋友:

相关文章

订单 vue实现

订单 vue实现

Vue 实现订单功能 数据模型设计 订单功能通常需要设计以下数据结构: // 订单数据结构 const order = { id: '', // 订单ID userId…

vue中实现显示和隐藏

vue中实现显示和隐藏

控制显示与隐藏的方法 在Vue中实现元素的显示和隐藏可以通过多种方式完成,以下是常见的几种方法: 1. 使用v-if指令v-if根据条件动态添加或移除DOM元素,适合需要频繁切换的场景。当条件为f…

vue实现文章锚点定位

vue实现文章锚点定位

实现文章锚点定位的方法 在Vue中实现文章锚点定位可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML锚点 通过HTML的id属性和<a>标签的href属性实现锚点跳转。在V…

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue实现store

vue实现store

Vue 实现 Store 在 Vue 中,可以通过 Vuex 或 Pinia 实现全局状态管理(Store)。以下是两种主流方案的实现方法。 使用 Vuex 实现 Store Vuex 是 Vu…

vue实现计时

vue实现计时

Vue 实现计时功能 在 Vue 中实现计时功能可以通过多种方式完成,以下是几种常见的方法: 使用 setInterval 实现基础计时器 通过 setInterval 和 clearInterva…