├── .gitignore ├── views ├── partials │ ├── footer.hbs │ └── header.hbs ├── about.hbs ├── maintenance.hbs ├── home.hbs └── projects.hbs ├── package.json ├── public └── help.html └── server.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | server.log 3 | package-lock.json -------------------------------------------------------------------------------- /views/partials/footer.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/partials/header.hbs: -------------------------------------------------------------------------------- 1 |
2 | 3 |

{{pageTitle}}

4 |

home

5 |

About

6 |

Projects

7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web-server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node server.js" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.16.3", 14 | "hbs": "^4.0.1" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /public/help.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Help 7 | 8 | 9 | 10 | 11 | 12 |

Help Page

13 |

some text here

14 | 15 | -------------------------------------------------------------------------------- /views/about.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{pageTitle}} 7 | 8 | 9 | 10 | 11 | 12 | {{> header}} 13 |

some text here

14 | 15 | {{> footer}} 16 | 17 | -------------------------------------------------------------------------------- /views/maintenance.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Some website 7 | 8 | 9 | 10 | 11 | 12 |

We'll be right back

13 |

this site currenlty being updated

14 | 15 | -------------------------------------------------------------------------------- /views/home.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{pageTitle}} 7 | 8 | 9 | 10 | 11 | 12 | {{> header}} 13 |

{{screamIt welcomeMessage}}

14 | 15 | {{> footer}} 16 | 17 | -------------------------------------------------------------------------------- /views/projects.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{pageTitle}} 7 | 8 | 9 | 10 | 11 | 12 | {{> header}} 13 |

Project page text would go here

14 | 15 | {{> footer}} 16 | 17 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const hbs = require('hbs'); 3 | const fs =require('fs'); 4 | 5 | //for dynamic port allocation 6 | const port =process.env.PORT || 3000; 7 | // create an app 8 | var app = express(); 9 | 10 | //for setting up template for pages 11 | hbs.registerPartials(__dirname + '/views/partials'); 12 | 13 | //set up a view engine 14 | app.set('view engine','hbs'); 15 | 16 | //middleware ---- lets you configure express to work like to your way 17 | /* logiing to screen 18 | api authetication 19 | write header is sent 20 | respont to a request -- resppoonse.render response.sent 21 | whether logded in and give access to him*/ 22 | 23 | 24 | // next for next thing to do 25 | app.use((req,res,next)=>{ 26 | var now = new Date().toString(); 27 | //creating LOGGER 28 | var log = `${now}: + ${req.method} ${req.url}`; 29 | console.log(log); 30 | fs.appendFile('server.log',log + '\n',(err)=>{ 31 | if(err){ 32 | console.log('Unable to Append to server.log'); 33 | } 34 | }); 35 | 36 | next(); 37 | }); 38 | 39 | // app.use((req,res,next)=>{ 40 | // res.render('maintenance.hbs'); 41 | // }); 42 | 43 | app.use(express.static(__dirname + '/public')); 44 | 45 | 46 | //register helper of hbs 47 | hbs.registerHelper('getCurrentYear',()=>{ 48 | return new Date().getFullYear(); 49 | }); 50 | //helper with arguemets 51 | hbs.registerHelper('screamIt',(text)=>{ 52 | return text.toUpperCase(); 53 | }); 54 | 55 | //setting up http routehandler 56 | app.get('/',(req,res)=>{ 57 | 58 | res.render('home.hbs',{ 59 | pageTitle:'Home Page', 60 | welcomeMessage:'welcome to my website' 61 | }); 62 | //res.send('

Hello Express!

'); 63 | // res.send({ 64 | // name:'Ashlesh', 65 | // likes:[ 66 | // 'biking', 67 | // 'hiking', 68 | // 'sleeping' 69 | // ] 70 | // }) 71 | }); 72 | 73 | app.get('/about',(req,res) =>{ 74 | res.render('about.hbs',{ 75 | pageTitle:'about page' 76 | }); 77 | }); 78 | 79 | app.get('/projects',(req,res) =>{ 80 | res.render('projects.hbs',{ 81 | pageTitle:'Projects page' 82 | }); 83 | }); 84 | 85 | app.get('/bad',(req,res) =>{ 86 | res.send({ 87 | error:'could not load page' 88 | }); 89 | }); 90 | 91 | //an default port no set here with a function server is up ... do something 92 | app.listen(port,()=>{ 93 | console.log(`Server is Up on port ${port}`); 94 | 95 | }); --------------------------------------------------------------------------------