Skip to content
Snippets Groups Projects
Commit 229c7a12 authored by Mamadu-lamarana Bah's avatar Mamadu-lamarana Bah :speech_balloon:
Browse files

Rendu Tp express

parent 29cf1795
No related branches found
No related tags found
No related merge requests found
Showing
with 1632 additions and 0 deletions
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
const jsonRouter = require('./routes/jsonRouter');
// define middlewares managing unknown routes
const error = require('./middlewares/error.middleware');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/json', jsonRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(error);
module.exports = app;
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('express:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
const createError = require('http-errors');
const url = require('url');
// catch 404 and forward to error handler
const notFound =
(req, res, next) => {
next(createError(404));
};
// error handler
const handleError =
(err, req, res, next) => {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error', { error : err, url : req.url } );
};
module.exports.notFound = notFound;
module.exports.handleError = handleError;
const path = require('path');
module.exports.home =
(req, res) => {
res.render('index', { title: 'Express' });
}
module.exports.first =
(_,res) => {
const options = {
root : 'html',
headers: {
'Content-Type': 'text/html',
'x-timestamp': Date.now(),
'x-sent': true
}
};
res.sendFile('first.html', options);
}
module.exports.second =
(_,res) => {
const options = {
root : 'html',
headers: {
'Content-Type': 'text/html',
'x-timestamp': Date.now(),
'x-sent': true
}
};
res.sendFile('second.html', options);
}
class jsonController {
constructor() {
this.random = this.random.bind(this);
this.home = this.home.bind(this);
}
getCurrentDate() {
const date = new Date();
const d = date.toISOString();
return d;
}
random(_, res) {
const params = {};
params.randomValue = Math.floor(Math.random()*101);
res.status(200).json(params);
}
home(req, res) {
const params = {};
if(Object.keys(req.query).length !== 0) {
for (const param of Object.keys(req.query)) {
params[param] = req.query[param];
}
}
params.date = this.getCurrentDate();
res.status(200).json(params);
}
}
// export controller object. Could be defined as a singleton.
module.exports = new jsonController();
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta charset="UTF-8"/>
<title>FIRST</title>
<link href="/stylesheets/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h1>First page</h1>
<p>
delivered by express
</p>
</body>
</html>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta charset="UTF-8"/>
<title>SECOND</title>
<link href="/stylesheets/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h1>Second page</h1>
<p>
delivered by express
</p>
<p>
<img src="/images/timoleon_oceanie.jpg" alt="timoleon océanie" />
</p>
</body>
</html>
const express = require('express');
const router = express.Router();
const errorController = require('../controllers/error.controller');
// catch 404 and forward to error handler
router.use(errorController.notFound);
// error handler
router.use(errorController.handleError);
module.exports = router;
This diff is collapsed.
{
"name": "express",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"http-errors": "~1.6.3",
"morgan": "~1.9.1",
"pug": "2.0.0-beta11"
}
}
express/public/images/timoleon_oceanie.jpg

48.6 KiB

body {
padding: 50px;
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
a {
color: #00B7FF;
}
var express = require('express');
var router = express.Router();
// import controller for index
const indexController = require('../controllers/index.controller');
/* GET home page. */
router.get('/', indexController.home );
router.get('/first', indexController.first );
router.get('/second', indexController.second );
module.exports = router;
var express = require('express');
var router = express.Router();
// import controller for index
const jsonController = require('../controllers/json.controller');
/* GET home page. */
router.get('/?', jsonController.home );
router.get('/random', jsonController.random);
module.exports = router;
body {
padding: 50px;
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
a {
color: #00B7FF;
}
extends layout
block content
h1= message
h2= error.status
pre #{error.stack}
extends layout
block content
h1= title
p Welcome to #{title}
doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
block content
{
"name": "javascriptfs",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment