├── .gitignore ├── index.js ├── package.json └── views └── index.ejs /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .tmp 3 | .DS_Store -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var app = express(); 3 | 4 | app.set('views', 'views'); 5 | app.engine('html', require('ejs').renderFile); 6 | app.set('view engine', 'ejs'); 7 | 8 | app.get('/', function(req, res){ 9 | 10 | //set default variables 11 | var totalStudents = 80, 12 | pageSize = 8, 13 | pageCount = 80/8, 14 | currentPage = 1, 15 | students = [], 16 | studentsArrays = [], 17 | studentsList = []; 18 | 19 | //genreate list of students 20 | for (var i = 1; i < totalStudents; i++) { 21 | students.push({name: 'Student Number ' + i}); 22 | } 23 | 24 | //split list into groups 25 | while (students.length > 0) { 26 | studentsArrays.push(students.splice(0, pageSize)); 27 | } 28 | 29 | //set current page if specifed as get variable (eg: /?page=2) 30 | if (typeof req.query.page !== 'undefined') { 31 | currentPage = +req.query.page; 32 | } 33 | 34 | //show list of students from group 35 | studentsList = studentsArrays[+currentPage - 1]; 36 | 37 | //render index.ejs view file 38 | res.render('index', { 39 | students: studentsList, 40 | pageSize: pageSize, 41 | totalStudents: totalStudents, 42 | pageCount: pageCount, 43 | currentPage: currentPage 44 | }); 45 | }); 46 | 47 | var server = app.listen(3000, function() { 48 | console.log('Listening on port %d', server.address().port); 49 | }); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-pagination", 3 | "version": "0.0.1", 4 | "dependencies": { 5 | "ejs": "~0.8.4", 6 | "express": "~4.2.0" 7 | }, 8 | "engines": { 9 | "node": ">=0.10.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /views/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | NodeJs Pagination Demo 8 | 9 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 |
22 |

Students

23 | 24 | 29 | 30 | <% if (pageCount > 1) { %> 31 | 56 | <% } %> 57 | 58 |
59 | 60 | 61 | 62 | 63 | 64 | 65 | --------------------------------------------------------------------------------