当前位置:首页 > 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 实现文件树的方法 使用递归组件 递归组件是处理嵌套数据结构的理想方式。文件树通常包含文件夹和文件的嵌套结构,适合用递归组件实现。 <template> <ul>…

vue实现全局遮罩层

vue实现全局遮罩层

实现全局遮罩层的方法 在Vue中实现全局遮罩层可以通过多种方式完成,以下是几种常见的实现方法: 使用Vue组件创建遮罩层 创建一个遮罩层组件,通过全局注册或动态挂载的方式实现全局调用。以下是一个简单…

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现…

vue 实现豆瓣

vue 实现豆瓣

以下是基于 Vue 实现豆瓣电影类功能的实现方案,涵盖核心模块和技术要点: 数据获取与 API 调用 使用豆瓣开放 API(需注意调用频率限制)或第三方代理接口 推荐 axios 进行异步请求,配合…

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Des…