返回

vue3 + vant3开发网页版类掘金app项目二

前端


开篇寄语

大家好,前面两次分享我们已经实现了首页中推荐标签页的基本功能,包括热榜文章、热榜作者轮播展示,以及推荐文章列表展示、下拉刷新和滚动翻页自动加载数据功能。在首页中除了“推荐”标签页外还有其它10个额外标签页,即在前端视角,我们理解为就是多一个列表页面的设计,其余功能都和首页的推荐标签页是一样的。

需求分析

在开始介绍列表页面的组件封装之前,我们先来回顾一下,列表页面主要有哪些功能:

  • 热榜文章轮播展示
  • 热榜作者轮播展示
  • 文章列表展示
  • 下拉刷新
  • 滚动翻页自动加载数据

这些功能已经基本上概括了列表页面的核心功能,我们把需求分析清楚后,我们就可以很轻松的根据需求逐一设计组件。

组件封装

  1. 热榜文章轮播展示组件
  2. 热榜作者轮播展示组件
  3. 文章列表组件
  4. 下拉刷新组件
  5. 滚动翻页自动加载数据组件

在前端的设计中,我们将以上组件作为独立的组件进行开发,因为这些组件可以独立使用。假设我们需要开发一个新的列表页面,我们只要将这些组件组合起来使用就可以了,大大提高了开发效率。

下面我们主要以列表组件的开发为主线进行分享,其他组件的功能和开发思路与列表组件类似,我们就不再展开说明了。

列表组件开发

首先,我们先来看一下列表组件的组件声明代码:

<template>
  <div class="list-container">
    <ul class="list-wrapper">
      <li class="list-item" v-for="item in list" :key="item.id">
        {{ item.title }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  name: 'ListComponent',
  props: {
    list: {
      type: Array,
      required: true
    }
  }
}
</script>

<style scoped>
.list-container {
  width: 100%;
  padding: 20px;
}

.list-wrapper {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.list-item {
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 5px;
}
</style>

数据源

我们先来看一下列表组件的props声明部分:

props: {
  list: {
    type: Array,
    required: true
  }
}

通过props声明可以得知,列表组件需要一个名为list的数组数据源,用于渲染列表。

渲染列表

接下来,我们来看一下列表组件的template部分:

<template>
  <div class="list-container">
    <ul class="list-wrapper">
      <li class="list-item" v-for="item in list" :key="item.id">
        {{ item.title }}
      </li>
    </ul>
  </div>
</template>

在template部分,我们使用v-for指令循环遍历list数组,并使用{{ item.title }}渲染列表项的标题。

样式

最后,我们来看一下列表组件的style部分:

<style scoped>
.list-container {
  width: 100%;
  padding: 20px;
}

.list-wrapper {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.list-item {
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 5px;
}
</style>

在style部分,我们对列表组件的样式进行了定义,包括容器样式、列表样式和列表项样式。

组件使用

现在,我们可以将列表组件注册到Vue实例中,并将其用于渲染列表:

import ListComponent from './components/ListComponent.vue'

export default {
  components: {
    ListComponent
  },
  data() {
    return {
      list: [
        { id: 1, title: '文章标题1' },
        { id: 2, title: '文章标题2' },
        { id: 3, title: '文章标题3' }
      ]
    }
  },
  template: `<list-component :list="list"></list-component>`
}

通过以上代码,我们就可以在Vue实例中使用列表组件了。

总结

以上就是列表组件的封装和使用过程,其他组件的功能和开发思路与列表组件类似,我们就不再展开说明了。

希望本文能够对您有所帮助,如果您有任何问题,欢迎在评论区留言。