js页码生成库,一个适合前后端分离的页码生成器

原文:js页码生成库,一个适合前后端分离的页码生成器

前言

上星期写的任务里面有需要进行分页的处理,git搜索了一番,没有觉得合适的,于是自己临时写了个分页的算法。

然后等闲下来的时候,决定把分页进行优化并推广。于是乎,一个适合前后端分离的页码生成器就这样出来了。

先别废话了,直接上 git 地址demo 地址。看官果断点击进去瞧瞧看。项目主页的 readme 文档的自动排版将更好。

先讲讲设计思想

整个开发流程围绕事件绑定进行开发。

脱离 callback 回调这种回调方法,直接使用 事件 方式触发换页前后的动作,方便解耦。

既然使用这种方式进行回调,就使用全局变量挂载分页的数据,方便回调时候进行分页数据的访问。

库的依赖

由于开发库的时候,并没有使用原生的语法进行元素或者事件绑定的操作,因此需要依赖某个库。

现阶段,经过测试支持 zepto 以及 jquery (二选一)。

css 方面,建议还是直接自己写或者使用 bootstrap 的库,源代码里面有从 bootstrap 里面抽出来的分页 css 代码。

简洁demo

由于分页就必须知道分页数据大小,因此必须传输配置对象。

var pageConfig = {
  // 每页显示的数据长度,必填,而且 >1
  prePageLenght: 10,
  // 数据的总长度,必填,而且 >1
  dataLength: 30,
  // 现在的页码,默认 1
  pageNow: 1,
  // 渲染分页 html 的容器,一般框架的容器即可
  renderBox: $(‘.pagination-box‘)
};

配置之后,进行调用

// 运行即可分页
pageBuilder(pageConfig);

这样子就能进行分页了。

回调的书写

回调的书写虽然放在了调用分页的主函数后面,但是记得在调用分页之前就定义这些事件,因为一旦调用分页函数,就马上触发分页回调,写在后面了,就会忘记了刚分页时候的事件回调了。

首先是分页前的回调,分页之前会触发 window 下面一个自定义分页之前的事件 beforePageChange ,因此要触发处理分页前的动作,就这样处理:

// 提前定义好分页之前的动作,可选
$(window).on(‘beforePageChange‘, function() {
  // callback
  // todo
  // 获取当前页码,可以从 pageBuilder.page.pageNow 取得,注意此时的值为未分页之前的旧页码。
})

同样道理,分页之后的回调差不多:

// 提前定义好分页之后的动作,可选
$(window).on(‘afterPageChange‘, function() {
  // callback
  // todo
  // 获取当前页码,可以从 pageBuilder.page.pageNow 取得
})

特别说明

一个页面只适合使用一个分页实例。分页的动作将在 hashchange 触发之后进行分页。

里面监控页码变化的函数:

    // 绑定换页的事件
    $(window).on(‘hashchange‘, function() {
      var hash = location.hash;
      var pageTemp = 0;
      if (/^#page=\d+$/.test(hash) === true) {
        // 直接是页码的
        pageTemp = hash.substring(6) | 0;
        if (defaultConfig.pageNow !== pageTemp) {
          defaultConfig.pageNow = pageTemp;
          $(window).trigger("renderPagination");
        }

      } else if (hash === "#page=next") {
        // 下一页的
        location.hash = "page=" + ( defaultConfig.pageNow + 1 );
      } else if (hash === "#page=prev") {
        // 上一页的
        location.hash = "page=" + ( defaultConfig.pageNow - 1 );
      }
    })

因为 hashchange 只支持 IE8+,

所以,该插件只适合 IE8+,甚至IE8的怪异模式不支持 hashchange 事件。

结束语

这个库还有很多可以优化的地方,例如页码缓存,还有作用域优化之类的,还没进行优化。

希望大家喜欢。喜欢的话,点个推荐吧,如果使用上了,记得 star 下哦。

js页码生成库,一个适合前后端分离的页码生成器

时间: 2024-12-26 07:14:02

js页码生成库,一个适合前后端分离的页码生成器的相关文章

[原创]基于VueJs的前后端分离框架搭建之完全攻略

首先请原谅本文标题取的有点大,但并非为了哗众取宠.本文取这个标题主要有3个原因,这也是写作本文的初衷: (1)目前国内几乎搜索不到全面讲解如何搭建前后端分离框架的文章,讲前后端分离框架思想的就更少了,而笔者希望在本文中能够全面.详细地阐述我们团队在前后端分离的摸索中所得到的搭建思路.最佳实践以及架构思想: (2)我们团队所搭建的前后端分离框架,并非只是将网上传播的知识碎片简单拼装,而是一开始就从全局出发,按照整个系统对前后端分离框架的最高期望进行设计,到目前为止,可以说我们的框架完全实现了对我们

移动端开发者眼中的前端开发流程变迁与前后端分离

写在最开始 移动端与前端的区别 前端开发的混沌时代 后端 MVC MVC 方案实现 MVC 的缺点与改进 前端只写 Demo HTML 模板 后端 MVC 架构总结 AJAX 与前端 MVC 前后端分离的缺点 双端 MVC 不统一 SEO 性能不够 集中 Or 分离 Nodejs 前后端分离的哲学 Nodejs 分层 实战应用 风险控制 总结 参考资料 写在最开始 这是一篇面向移动端开发者的科普性文章,从前端开发的最初流程开始,结合示范代码,讨论开发流程的演变过程,希望能覆盖一部分前端开发技术栈

【前端经典面试题】前后端分离(说一说你理解的前后端分离?)

前言:昨晚面试遇到了这个问题,既然遇到了,找些资料来一起做个总结吧. 1.对前后端分离的误解  在回答这个问题的时候不要钻到某个具体的技术 ,或者某个具体的框架上面→比如ajax异步请求.vue或react等组件化的开发框架.再或者rest接口规范.API接口数据约定等.从某个具体的技术切入来回答对前后端分离的理解本身就是一种局限的看法,所以在回答这个问题的时候应该从以下几个方面展开. 2.为什么要分离?  在以往的很长一段时间里,后端开发才是开发团队里的核心,前端开发往往仅由一小撮人甚至交给后

前后端分离开发与跨域问题

前后端分离 传统开发方式 曾几何时,JSP和Servlet为Java带来了无限风光,一时间大红大紫,但随着互联网的不断发展,这样的开发方式逐渐显露其弊端,在移动互联网炙手可热的今天,应用程序对于后台服务的要求发生了巨大的变化; 传统的项目开发与交互流程: 在传统的web开发中,页面展示的内容以及页面之间的跳转逻辑,全都由后台来控制,这导致了前后端耦合度非常高,耦合度高则意味着,扩展性差,维护性差,等等问题 传统开发的问题如下: 耦合度高 调试麻烦,出现问题时往往需要前后台一起检查 开发效率低,前

一个Java程序猿眼中的前后端分离以及Vue.js入门

松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ,因此在我的书里边就没有多说.但是最近总结小伙伴遇到的问题,感觉很多人对前后端分离开发还是两眼一抹黑,所以今天松哥想和大家聊一下前后端分离以及 Vue.js 的一点事,算是一个简单的入门科普吧. 前后端不分 后端模板:Jsp.FreeMarker.Velocity 前端模板:Thymeleaf 前

【开源.NET】 分享一个前后端分离的轻量级内容管理框架

开发框架要考虑的面太多了:安全.稳定.性能.效率.扩展.整洁,还要经得起实践的考验,从零开发一个可用的框架,是很耗时费神的工作.网上很多开源的框架,为何还要自己开发?我是基于以下两点: 没找到合适的:安全.稳定.简单.易用.高效.免费: 想成为架构师: 于是就自己动手,参考网上开源的项目和借鉴网友的设计思路(特别是萧秦系列博文),结合自己的实践,开发了一个简单.易用.高效的的框架,虽然不完善,但也能解决现实中的问题.不过随着见识增广,发现没负责过千万级别的项目难以成为架构师,也不可能开发出一个完

一个简单粗暴的前后端分离方案

项目背景 刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据接口.于是协商后打算将前后端完全分离,页面上的所有数据都通过ajax向后端取,页面渲染的事情完全由前端来做.另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后端完全分离的尝试. 之前开发都是同步渲染和异步渲染混搭的,有些东西可以有后

一个前后端分离方案[转载]

项目背景 背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据接口.于是协商后打算将前后端完全分离,页面上的所有数据都通过ajax向后端取,页面渲染的事情完全由前端来做.另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后端完全分离的尝试. 之前开发都是同步渲染和异步渲染混搭的,有些东西可以有后端PHP帮你编译好,

一个简单粗暴的前后端分离方案(转)

项目背景 刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据接口.于是协商后打算将前后端完全分离,页面上的所有数据都通过ajax向后端取,页面渲染的事情完全由前端来做.另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后端完全分离的尝试. 之前开发都是同步渲染和异步渲染混搭的,有些东西可以有后