欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nodejs個(gè)人博客開發(fā)第六步 數(shù)據(jù)分頁

 更新時(shí)間:2021年06月29日 09:40:29   作者:陶士涵  
這篇文章主要為大家詳細(xì)介紹了nodejs個(gè)人博客開發(fā)的數(shù)據(jù)分頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家分享了nodejs個(gè)人博客開發(fā)的數(shù)據(jù)分頁,具體內(nèi)容如下

控制器路由定義

首頁路由:http://localhost:8888/

首頁分頁路由:http://localhost:8888/index/2

/**
* 首頁控制器
*/
var router=express.Router();
/*每頁條數(shù)*/
var pageSize=4;
/*首頁*/ 
router.get('/',function(req,res,next){
 var cid=0;
 F.model("article").assignIndexData(cid,1,pageSize,res);
});
/*首頁分頁*/
router.get('/index/:page',function(req,res,next){
 var currentPage=parseInt(req.params.page);
 var cid=0;
 F.model("article").assignIndexData(cid,currentPage,pageSize,res);
});

分類列表分頁路由:http://localhost:8888/category/分類id/分頁

/*分類頁*/
router.get('/category/:cid/:page',function(req,res,next){
 var cid=req.params.cid;
 var currentPage=parseInt(req.params.page);
 F.model("article").assignIndexData(cid,currentPage,pageSize,res);
});

模型數(shù)據(jù)部分

控制器調(diào)用article模型的assignIndexData()方法,參數(shù):分類id,當(dāng)前頁,每頁條數(shù),響應(yīng)對(duì)象

調(diào)用category模型的getAllList()方法得到分類list,參數(shù):回調(diào)函數(shù)

調(diào)用article模型的getCount()方法得到總條數(shù),參數(shù):分類id,回調(diào)函數(shù)

調(diào)用article模型的getArticlePager()方法得到文章對(duì)象的數(shù)據(jù)list,參數(shù):分類id,當(dāng)前頁,每頁條數(shù),回調(diào)函數(shù)

對(duì)上一頁,下一頁進(jìn)行-1和+1,并進(jìn)行判斷,上一頁應(yīng)大于0,下一頁應(yīng)小于等于總頁數(shù)(總條數(shù)/每頁條數(shù) 向上取整)

把數(shù)據(jù)分配到模板上

/**
* 文章模型文件
*/
module.exports={
 /*獲取條數(shù)*/
 getCount:function(categoryId,callback){
  var condition="";
  if(categoryId!=0){
   condition="where category_id="+categoryId;
  } 
  var sql="select count(*) num from article "+condition;
  db.query(sql,callback);
 },
 /*獲取分頁數(shù)據(jù)*/
 getArticlePager:function(categoryId,currentPage,pageSize,callback){
  if(currentPage<=0||!currentPage) currentPage=1;
  var start=(currentPage-1)*pageSize;
  var end=pageSize;
  var condition="";
  if(categoryId!=0){
   condition="where category_id="+categoryId;
  }
  var sql="select * from article "+condition+" order by time desc limit "+start+","+end;
  db.query(sql,callback);
 },
 /*歸檔*/
 getArchives:function(callback){
  db.query("select time from article order by time desc",callback);
 },
 /*分配首頁數(shù)據(jù)*/
 assignIndexData:function(cid,currentPage,pageSize,res){
  var categoryModel=F.model("category");
  var articleModel=this;
  // 分類數(shù)據(jù)
  categoryModel.getAllList(function(err,categoryList){
   // 文章條數(shù)
   articleModel.getCount(cid,function(err,nums){
    // 文章分頁
    articleModel.getArticlePager(cid,currentPage,pageSize,function(err,articleList){
     var nextPage=(currentPage+1)>=Math.ceil(nums[0].num/pageSize) ? Math.ceil(nums[0].num/pageSize) : currentPage+1;
     var prePage=(currentPage-1)<=0 ? 1 : currentPage-1;
     // 歸檔
     articleModel.getArchives(function(err,allArticleTime){
      var newArticleTime=[];
      for(var i=0;i<allArticleTime.length;i++){
       newArticleTime.push(F.phpDate("y年m月",allArticleTime[i].time));
      }
      /*分配數(shù)據(jù)*/
      var data={
       categoryList:categoryList,
       articleList:articleList,
       cid:cid,
       nextPage:nextPage==0 ? 1 : nextPage,
       prePage:prePage,
       allArticleTime:newArticleTime,
       currentPage:currentPage
      };
      
      /*渲染模板*/
      res.render("home/index",data); 
     });   
    });
   });

  });
 }
};

模板部分

<nav>
   <ul class="pager">
    <li><a class="btn <%if(currentPage==prePage){%>disabled<%}%>" 
    href="/<%if(cid!=0){%>category/<%=cid%>/<%}else{%>index/<%}%><%=prePage%>" rel="external nofollow" >上一頁</a></li>
    <li><a class="btn <%if(currentPage==nextPage){%>disabled<%}%>" 
    href="/<%if(cid!=0){%>category/<%=cid%>/<%}else{%>index/<%}%><%=nextPage%>" rel="external nofollow" >下一頁</a></li>
   </ul>
   </nav>

效果圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.js中路徑處理模塊path詳解

    Node.js中路徑處理模塊path詳解

    相信大家都知道在nodejs中,path是個(gè)使用頻率很高,但卻讓人又愛又恨的模塊。因?yàn)椴糠治臋n說的不夠清晰,還有部分因?yàn)榻涌诘钠脚_(tái)差異性。本文就給大家詳細(xì)介紹下關(guān)于Node.js中的路徑處理模塊path,希望能對(duì)大家學(xué)習(xí)或者使用模塊path有所幫助,下面來一起看看吧。
    2016-11-11
  • Node.js系列之安裝配置與基本使用(1)

    Node.js系列之安裝配置與基本使用(1)

    這篇文章主要為大家詳細(xì)介紹了Node.js系列之安裝配置與基本使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 基于uni-app和Node.js實(shí)現(xiàn)app更新功能

    基于uni-app和Node.js實(shí)現(xiàn)app更新功能

    uniapp 打包 ios,android 之后,有時(shí)候緊急修復(fù)或修改 ui,還需要走應(yīng)用市場(chǎng)審核,往往審核時(shí)間就需要幾天,如果是有bug需要升級(jí)就會(huì)很著急,要在uni-app中實(shí)現(xiàn)app更新功能,并使用Node.js作為后端服務(wù)本文給出了詳細(xì)的思路和步驟,需要的朋友可以參考下
    2024-08-08
  • Node.js的npm包管理器基礎(chǔ)使用教程

    Node.js的npm包管理器基礎(chǔ)使用教程

    特別是JavaScript領(lǐng)域中,基于NPM的網(wǎng)絡(luò)傳輸方式真的是越來越流行,包括React與Vue等許多JavaScript庫與框架都選擇使用npm進(jìn)行管理,這里就為大家送上Node.js的npm包管理器基礎(chǔ)使用教程,需要的朋友可以參考下
    2016-05-05
  • Nodejs腳本實(shí)現(xiàn)批量修改文件

    Nodejs腳本實(shí)現(xiàn)批量修改文件

    當(dāng)我們想要更改一下所有的文件,如何可以在修改到這些文件的同時(shí)又能實(shí)現(xiàn)節(jié)省時(shí)間呢,通過這篇文章我們將來學(xué)習(xí)一下怎么通過這個(gè)腳本來實(shí)現(xiàn)這個(gè)功能,希望對(duì)大家有所幫助
    2023-11-11
  • 三種Node.js寫文件的方式

    三種Node.js寫文件的方式

    這篇文章主要為大家詳細(xì)介紹了三種Node.js寫文件的方式,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Postman xmysql不切換環(huán)境緩存數(shù)據(jù)到本地

    Postman xmysql不切換環(huán)境緩存數(shù)據(jù)到本地

    這篇文章主要為大家介紹了Postman xmysql不切換環(huán)境緩存數(shù)據(jù)到本地示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Node.js 中使用 async 函數(shù)的方法

    Node.js 中使用 async 函數(shù)的方法

    async是一個(gè)流程控制工具包,提供了直接而強(qiáng)大的異步功能?;贘avascript為Node.js設(shè)計(jì),同時(shí)也可以直接在瀏覽器中使用。
    2017-11-11
  • Node.JS在命令行中檢查Chrome瀏覽器是否安裝并打開指定網(wǎng)址

    Node.JS在命令行中檢查Chrome瀏覽器是否安裝并打開指定網(wǎng)址

    這篇文章主要介紹了Node.JS在命令行中檢查Chrome瀏覽器是否安裝,并打開指定網(wǎng)址,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • 原生nodejs使用websocket代碼分享

    原生nodejs使用websocket代碼分享

    本文給大家分享的是在原生的nodejs中如何使用websocket實(shí)現(xiàn)信息傳輸,非常實(shí)用,有需要的小伙伴可以參考下
    2018-04-04

最新評(píng)論