【node】express4.x : 写一个分页

本文详细介绍了使用Express框架实现分页功能的过程,包括环境配置、路由处理及视图展示等关键步骤,通过具体代码示例展示了如何计算总页数、当前页码以及如何正确展示分页链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pre:环境

1.样式用的bootstrap,当然你也可以用其他的,不影响

2.express版本是4.x

3.async用的是最新版本,package.json中加的 :  “async”:"*",主要是为了让分页逻辑更清晰

实现效果:

下边是具体的实现过程

一、先说路由端

var count = 0;//数据总条目

var page = 0;//总页数

var size = 9;//每页的条数

var pagenum = req.query.pagenum;

pagenum = pagenum?pagenum:1;//最终得到当前页码

//调用model中的获取方法,通过用户名获取所有分页数据

Post.get(req.session.user.name,function(err,posts){

if(err){

posts = [];

}

//task1:逻辑操作

var task1 = function(callback){

count = posts.length;//数据条目

page = Math.ceil(count/size);//得到总的页数

 

pagenum = pagenum<1?1:pagenum;//页码如果小于1,显示为1

pagenum = pagenum > page?page:pagenum;//如果页码大于总页数,得到最终页码

callback(null,'我是第一组数据');

}

//task2:传值

var task2 = function(callback){

//得到我们想要部分的数组

var data= posts.splice((pagenum - 1) * size, size);

callback(null,data);

}

//参数1为任务数组,参数2是回调函数

async.series([task1,task2],function(err,data){

res.render('index',{

title:'首页',

posts:data[1],//查出来的数据

page:page,//总页数

count:count,//总条目

pagenum:pagenum,//当前页码

size:size,//单页条目

});

});

});

二、view里边

<div class="pagination">

<ul>

<li><a href="#">当前第<%= pagenum %>页</a></li>

<li><a href="/?pagenum=<%- pagenum<1?1:parseInt(pagenum)-1 %>">上一页</a></li>

<li><a href="/?pagenum=<%-pagenum>page?page:parseInt(pagenum)+1%>">下一页</a></li>

<li><a href="#">共<%= page %> 页</a></li>

</ul>

</div>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值