js分页插件的使用(js前端分页完整代码)

大多数web应用程序背后的思想都是从数据库中获取数据,并以最好的方式将数据呈现给用户。当我们处理数据时,有时最好的呈现方法就是创建一个列表。

根据数据量及其内容,我们可以决定一次显示所有内容(很少),或者只显示一个更大数据集的特定部分(更有可能)。只显示部分现有数据的主要原因是,我们希望尽可能保持应用程序的性能,并避免加载或显示不必要的数据。

如果我们决定以“chunks(块)”的形式显示数据,那么我们需要一种方法来导航该数据集合。对一组数据进行导航的最常见的两种方法是:

第一个是分页,这是一种将数据集分割为特定数量的页面的技术,它可以避免用户被一个页面上的数据量淹没,并允许用户一次查看一组结果。以你正在阅读的这个博客为例。主页列出了最新的10篇文章。查看下一组最新的帖子需要单击一个按钮。

js分页插件的使用(js前端分页完整代码)

苹果新闻app也使用了无限滚动技术来浏览文章列表。

在本文中,我们将更深入地研究第一种类型。分页是我们几乎每天都会遇到的事情,但它并不是不重要的。这是一个很好的组件应用实例,所以这也正是我们要做的。我们将按步骤创建一个负责显示该列表的组件,并在单击要显示的特定页面时触发获取其他文章的操作。换句话说,我们正在用Vue.js创建一个分页组件,就像下面这样:

js分页插件的使用(js前端分页完整代码)

在该组件的脚本部分,我们将设置初始数据:

  • articles: 这是一个空数组,填充了从mounted钩子上的API获取的数据。
  • currentPage: 用于操作分页。
  • pageCount : 这是在基于API响应的mounted钩子上计算的页面总数。
  • visibleItemsPerPageCount: 这是我们希望在一个页面上看到的文章数量。

在这个阶段,我们只获取文章列表的第一页。这将给我们列出两篇文章:

js分页插件的使用(js前端分页完整代码)

#步骤3:创建一个组件来触发页面更改

我们已经有了pageChangeHandle方法,但是我们并没有在任何地方触发它。我们需要创建一个负责触发它的组件。

这个组件应该做以下事情:

  1. 允许用户进入下一页/上一页。
  2. 允许用户从当前选定的页面跳转到一个范围内的特定页面。
  3. 根据当前页面更改页码的范围。

如果我们把它画出来,它看起来是这样的:

js分页插件的使用(js前端分页完整代码)

我们的BasePagination将包含两个按钮,负责转到下一页和上一页。

js分页插件的使用(js前端分页完整代码)

我们将在ArticlesList组件中的ArticleItems下面呈现该组件。

js分页插件的使用(js前端分页完整代码)

我们从创建一个将用作单个页码的组件开始。我称之为BasePaginationTrigger。它将做两件事:显示从BasePagination组件传递的页码,并在用户单击特定的页码时发出事件。

js分页插件的使用(js前端分页完整代码)

在脚本部分,我们需要添加另一个方法(onLoadPage),该方法将在loadPage事件从触发器组件中发出时触发。此方法将接收已单击的页码,并将事件发送到ArticlesList组件。

js分页插件的使用(js前端分页完整代码)

#要求3:根据当前页面更改页码范围

js分页插件的使用(js前端分页完整代码)

现在我们来看一看每个场景。

场景1: 所选页码小于列表宽度的一半

我们让第一个元素总是等于1。然后我们遍历列表,为每个元素添加一个索引。最后,我们添加最后一个值并将其设置为等于最后一页的页码——如果需要,我们希望能够直接跳到最后一页。

js分页插件的使用(js前端分页完整代码)

场景3: 其他所有情况

我们知道列表的中心应该是什么数字:当前页面。我们也知道这个列表应该有多长。这允许我们得到数组中的第一个数字。然后,我们通过向每个元素添加索引来填充列表。最后,我们将1推入数组的第一个位置,并将最后一个数字替换为我们最后一个页码。

js分页插件的使用(js前端分页完整代码)

这样我们就完成了!我们刚刚使用Vue构建了一个很好的可重用分页组件。

#什么时候应该避免这种模式

尽管这个组件非常贴心,但它并不是针对所有涉及分页的用例的灵丹妙药。

例如,对于连续流传输且结构相对扁平的内容,避免这种模式可能是一个好主意,比如每个条目都位于相同的层次结构级别,并且用户对其感兴趣的机会也类似。换句话说,就是不太像一篇有多个页面的文章的东西,而更像主导航的东西。

另一个例子是浏览新闻,而不是寻找特定的新闻文章。我们不需要确切地知道新闻在哪里,也不需要知道我们滚动多少才能看到特定的文章。

#就到这里!

希望这个模式在你的项目中能有用武之地,无论是对于一个简单的博客、一个复杂的电子商务网站,还是介于两者之间的站点。分页可能是一件痛苦的事情,但是拥有一个不仅可以重用而且可以考虑用于大量场景的模块化的模式可以使分页更容易处理。

(0)
小多多的头像小多多创始人

相关推荐

发表回复

登录后才能评论