5分钟了解分页的那些事?
写在前面
最近面试,我问了一个非常通用的问题,题目是什么呢? 题目就是,谈谈你对分页里面逻辑的理解以及如何实现的?面试题目不难,但是90%的人讲不清楚分页逻辑,对分页的一些细节问题更是回答的很模糊。不是很清晰。下面借此机会给大家讲讲分页有哪些逻辑。
分页的那些事
如上图所示: 分页包含很多小细节,
每页展示10条,多余的下一页展示,这里就涉及的知识点有,是否采取逻辑分页还是物理分页,物理分页的实现方式有哪些,各位自行百度,这里主要讲前台页面如何编写分页的逻辑
<#– 是否上一页–>
<#if page.hasPreviousPage><li><a class=”pointer” data-page=”1″>首页</i></a></li><li><a class=”pointer” data-page=”${page.prePage}”>上一页</i></a></li></#if>
<#–处理开头部分逻辑 开头省略号实现逻辑–>
<#if (page.navigateFirstPage = 2)><li><a class=”pointer” data-page=”1″>1</a></li><#elseif (page.navigateFirstPage > 2)><li><a class=”pointer” data-page=”1″>1</a></li><li>…</li></#if>
<#– 是否下一页–>
<#if page.hasNextPage><li><a class=”pointer active” data-page=”${page.nextPage}”>下一页</i></a></li><li><a class=”pointer” data-page=”${page.pages}”>尾页</i></a></li></#if>
<#–处理结果部分显示的逻辑 开头省略号实现逻辑–>
<#if (page.navigateLastPage = page.pages-1)><li><a class=”pointer” data-page=”${page.pages}”>${page.pages}</a></li><#elseif (page.navigateLastPage < page.pages-1)><li>…</li><li><a class=”pointer” data-page=”${page.pages}”>${page.pages}</a></li></#if>
<#– 中间显示页数–>
<#list page.navigateFirstPage..page.navigateLastPage as item><li><a ${(page.pageNum == item)?string(‘class=”pointer active”‘,’class=”pointer” data-page=”${item?c}”‘)}>${item?c}</a></li></#list>
<#– 显示总页数–>
<li> 共 ${page.pages} 页 </li>
分页的实现
上面分页的逻辑已经讲的比较清晰,逻辑需求理解清楚了,实现起来就简单了,这里要提醒大家的是,一个系统很多地方都有可能用到分页,所以大家最好封装成一个通用的组件,以便项目中实现复用。还有最后啰嗦一句,分页虽然不难,但是做一个通用的且体验感很强的分页组件需要大家去下一翻功夫。
原文发布时间为:2018-11-5
本文作者:HARRIES

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
区块链教程Fabric1.0源代码分析Orderer multichain
区块链教程Fabric1.0源代码分析Orderer multichain,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 Fabric 1.0源代码笔记 之 Orderer #multichain(多链支持包) 1、multichain概述 multichain代码集中在orderer/multichain目录下,目录结构如下: manager.go,Manager接口定义及实现。 chainsupport.go,ChainSupport接口定义及实现。 systemchain.go,system chain。 2、Manager接口定义及实现 2.1、Manager接口定义 用于链的创建和访问。 type Manager interface { //获取ChainSupport,以及判断链是否存在 GetChain(chainID string) (ChainSupport, bool) //获取系统通道的通道ID SystemChannelID()...
- 下一篇
make, cmake, qmake 这些到底是什么鬼??
make 是用来执行Makefile的 Makefile是类unix环境下(比如Linux)的类似于批处理的"脚本"文件。其基本语法是: 目标+依赖+命令,只有在 目标文件不存在,或 目标比 依赖的文件更旧, 命令才会被执行。由此可见,Makefile和make可适用于任意工作,不限于编程。比如,可以用来管理latex。 Makefile+make可理解为类unix环境下的项目管理工具,但它太基础了,抽象程度不高,而且在windows下不太友好(针对visual studio用户),于是就有了跨平台项目管理工具cmake cmake是跨平台项目管理工具,它用更抽象的语法来组织项目。虽然,仍然是目标,依赖之类的东西,但更为抽象和友好,比如你可用math表示数学库,而不需要再具体指定到底是math.dll还是libmath.so,在windows下它会支持生成visual studio的工程,在linux下它会生成Makefile,甚至它还能生成eclipse工程文件。也就是说,从同一个抽象规则出发,它为各个编译器定制工程文件。 cmake是抽象层次更高的项目管理工具,cmake命令执行的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- 2048小游戏-低调大师作品
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Hadoop3单机部署,实现最简伪集群