Thursday, August 1, 2019

10 useful middleware for a basic Express webapp


There was a time prior to Express 4.0 that most of the middleware listed was part of Express with  Connect, however this is now a separate project.  The following are basic middlewares dependencies to help wtih a basic webapp scaffold.


1. Connect 
npm install --save connect 
const connect = (require(connect));

This provides: 

basicAuth - basic access authorization for HTTPS and for easy development.
app.use(connect.bascAuth)(); 

body-parser  - parses json and urlencoded, for handling forms and AJAX request. You may have to install this separate as not part of Connect 3.0^ 

npm install --save body-parser 
app.use(require(bbody-parser)() );

compress - uses gzip to compress data good for slower mobile connections.
app.use(connect.compress);

directory - directory support for static files 
directory (app.use(connect.directory());

2. Formidable
npm install --save formidable
const formidable = require('formidable');
helpful for file uploads.

//example
app.post('/profiles/myPic', function(req, res) {
let form = new formidable.IncomingForm();
form.parse(req, function, fields, files) {
//...do something
res.redirect(303, '/file-uploaded');
  });
});

3. Cookie-parser
npm install --save cookie-parser
app.use(require(cookie-parser)(your secret goes here);
Easy for cookie management.

4. Express-session
npm install --save express-session
app.use(require(express-session)() );
Good for session IDs development only.

5. csurf
npm install --save csurf
app.use(require(csurf)());

Protects against Cross-site request forgery attacks.  Link after express-session.


6. errorhandler
npm install --save errorhandler
app.use(require(errorhandler)());
Good for development error handling

7. morgan
npm install --save morgan 
app.use(require(morgan)());
Logs all requests.

8. method-override 
npm install --save method-override 
app.use(require(method-override)());
Good for writing and testing APIs.

9. response-time 
npm install --save response-time
app.use(require(response-time)());
Helps performance tuning, gives response header an X-Response. 

10. vhost 
npm install --save vhost 
const vhost = require(vhost);
Helpful to manage subdomains in Express.










No comments:

Post a Comment