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

响应式优化

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

vue实现文章列表

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

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

相关文章

vue前端实现登录

vue前端实现登录

实现登录功能的基本流程 使用Vue实现登录功能需要结合前端框架和后端API交互。以下是一个典型的实现方案: 安装必要依赖 确保项目已安装axios用于HTTP请求: npm install axi…

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="we…

vue实现递归

vue实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据(如菜单、评论列表、文件目录等)。以下是具体实现方法: 定义递归组件 通过 name 选项让组件可以递归调用自身: &…

vue实现muli

vue实现muli

Vue 实现多语言(i18n)支持 在 Vue 项目中实现多语言(i18n)功能,通常使用 vue-i18n 插件。以下是具体实现步骤: 安装 vue-i18n npm install vue-i…

vue实现input

vue实现input

Vue 实现 Input 输入框的方法 基本双向绑定 使用 v-model 指令实现双向数据绑定,适用于大多数表单场景: <template> <input v-model="…

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…