最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs個人博客開發(fā)第六步 數據分頁

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

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

控制器路由定義

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

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

/**
* 首頁控制器
*/
var router=express.Router();
/*每頁條數*/
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);
});

模型數據部分

控制器調用article模型的assignIndexData()方法,參數:分類id,當前頁,每頁條數,響應對象

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

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

調用article模型的getArticlePager()方法得到文章對象的數據list,參數:分類id,當前頁,每頁條數,回調函數

對上一頁,下一頁進行-1和+1,并進行判斷,上一頁應大于0,下一頁應小于等于總頁數(總條數/每頁條數 向上取整)

把數據分配到模板上

/**
* 文章模型文件
*/
module.exports={
 /*獲取條數*/
 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);
 },
 /*獲取分頁數據*/
 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);
 },
 /*分配首頁數據*/
 assignIndexData:function(cid,currentPage,pageSize,res){
  var categoryModel=F.model("category");
  var articleModel=this;
  // 分類數據
  categoryModel.getAllList(function(err,categoryList){
   // 文章條數
   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));
      }
      /*分配數據*/
      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>

效果圖:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 詳解使用vscode+es6寫nodejs服務端調試配置

    詳解使用vscode+es6寫nodejs服務端調試配置

    本篇文章主要介紹了使用vscode+es6寫nodejs服務端調試配置,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 詳解50行代碼,Node爬蟲練手項目

    詳解50行代碼,Node爬蟲練手項目

    這篇文章主要介紹了50行代碼,Node爬蟲練手項目,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 使用Redis和Node.js來開發(fā)簡單的實時聊天功能

    使用Redis和Node.js來開發(fā)簡單的實時聊天功能

    在眾多實時通信的技術中,Redis和Node.js的結合是一種非常強大和流行的選擇,Redis是一種高性能的鍵值存儲數據庫,而Node.js是一個基于事件驅動的JavaScript運行時環(huán)境,兩者的結合可以輕松實現實時聊天功能,本文將指導您使用Redis和Node.js來開發(fā)一個簡單的實時聊天功能
    2024-08-08
  • node 使用multer中間件上傳報錯Unexpected end of form的問題及解決方法

    node 使用multer中間件上傳報錯Unexpected end of fo

    再前幾天還是可以正常上傳,但今天運行出現該報錯,下面通過場景分析給大家介紹node使用multer中間件上傳,報錯Unexpected end of form的解決方案,感興趣的朋友一起看看吧
    2025-03-03
  • 詳解nodejs 文本操作模塊-fs模塊(四)

    詳解nodejs 文本操作模塊-fs模塊(四)

    本篇文章詳細的講訴fa.fstat方法,這個State對象中,包含的數據都有哪些,并且他們分別代表的含義是什么。具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • node指定內存上限簡單代碼實例

    node指定內存上限簡單代碼實例

    NodeJS啟動的應用,內存使用是有上限的,下面這篇文章主要給大家介紹了關于node指定內存上限的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • node.js操作mongoDB數據庫示例分享

    node.js操作mongoDB數據庫示例分享

    這里給大家分享的是node.js操作mongoDB數據庫的示例,包括連接數據庫、插入數據、關閉數據庫、讀取數據、插入數據等方面,十分的全面,這里推薦給需要的小伙伴們。
    2014-11-11
  • 使用Node.js創(chuàng)建一個簡單的HTTP服務器的示例代碼

    使用Node.js創(chuàng)建一個簡單的HTTP服務器的示例代碼

    Node.js 是一種強大的 JavaScript 運行環(huán)境,允許開發(fā)者在服務器端運行 JavaScript 代碼,它以異步事件驅動的方式處理大量連接,適合構建高效的網絡應用程序,在這篇文章中,我們將一起學習如何使用 Node.js 創(chuàng)建一個簡單的 HTTP 服務器,并通過示例代碼幫你快速上手
    2025-02-02
  • node.js中的events.emitter.removeListener方法使用說明

    node.js中的events.emitter.removeListener方法使用說明

    這篇文章主要介紹了node.js中的events.emitter.removeListener方法使用說明,本文介紹了events.emitter.removeListener的方法說明、語法、接收參數、使用實例和實現源碼,需要的朋友可以參考下
    2014-12-12
  • Node.js利用console輸出日志文件的方法示例

    Node.js利用console輸出日志文件的方法示例

    本篇文章主要介紹了Node.js利用console輸出日志文件的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論

两当县| 孝感市| 兖州市| 叶城县| 马尔康县| 射阳县| 贵州省| 新龙县| 巨鹿县| 蛟河市| 东源县| 阜阳市| 象山县| 榆树市| 兴和县| 天镇县| 陈巴尔虎旗| 黄山市| 洪洞县| 呼和浩特市| 灌阳县| 临澧县| 潍坊市| 五大连池市| 嵩明县| 梧州市| 建昌县| 册亨县| 蓬安县| 迁安市| 江油市| 横峰县| 侯马市| 龙川县| 黄陵县| 尤溪县| 天镇县| 深圳市| 阿荣旗| 贵溪市| 白水县|