当前位置:首页 > JavaScript

js 分页实现

2026-02-01 16:14:26JavaScript

分页实现的基本原理

分页的核心是将大量数据分割成多个小块,每次只加载或显示其中一部分。通常需要计算总页数、当前页码、每页数据量等参数,结合前端渲染或后端接口实现。

前端分页实现

适用于数据量较小且已全部加载到前端的情况,通过数组切片实现分页。

// 示例数据
const allData = [...Array(100).keys()].map(i => ({ id: i, name: `Item ${i}` }));

function paginateFrontend(data, currentPage, itemsPerPage) {
  const startIndex = (currentPage - 1) * itemsPerPage;
  return data.slice(startIndex, startIndex + itemsPerPage);
}

// 使用示例
const currentPage = 2;
const itemsPerPage = 10;
const pageData = paginateFrontend(allData, currentPage, itemsPerPage);

后端分页实现

通过API请求实现,常用limitoffset参数(或pagesize)。

async function fetchPaginatedData(page, size) {
  const response = await fetch(`/api/items?page=${page}&size=${size}`);
  return response.json();
}

// 使用示例
fetchPaginatedData(1, 10).then(data => {
  console.log(data.items, data.totalPages);
});

分页组件示例

常见UI分页组件实现逻辑(以React为例):

function Pagination({ currentPage, totalPages, onPageChange }) {
  return (
    <div className="pagination">
      <button 
        disabled={currentPage === 1}
        onClick={() => onPageChange(currentPage - 1)}
      >Previous</button>

      {Array.from({ length: totalPages }, (_, i) => (
        <button
          key={i}
          className={currentPage === i + 1 ? 'active' : ''}
          onClick={() => onPageChange(i + 1)}
        >{i + 1}</button>
      ))}

      <button
        disabled={currentPage === totalPages}
        onClick={() => onPageChange(currentPage + 1)}
      >Next</button>
    </div>
  );
}

分页参数计算

计算分页相关参数的通用方法:

function calculatePagination(totalItems, currentPage, itemsPerPage) {
  const totalPages = Math.ceil(totalItems / itemsPerPage);
  currentPage = Math.max(1, Math.min(currentPage, totalPages));
  const startIndex = (currentPage - 1) * itemsPerPage;

  return {
    currentPage,
    totalPages,
    startIndex,
    endIndex: Math.min(startIndex + itemsPerPage - 1, totalItems - 1)
  };
}

分页样式优化

CSS样式建议(配合上述组件):

js 分页实现

.pagination {
  display: flex;
  gap: 5px;
}
.pagination button {
  padding: 5px 10px;
  border: 1px solid #ddd;
  background: white;
}
.pagination button.active {
  background: #007bff;
  color: white;
}
.pagination button:disabled {
  opacity: 0.5;
}

性能优化建议

大数据量分页时推荐使用无限滚动(Intersection Observer实现)或后端游标分页(cursor-based pagination),避免传统分页的性能问题。对于SQL数据库,推荐使用LIMIT offset, count语法时配合索引优化。

标签: 分页js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…