Express monkey-patch to support Streamline syntax.
npm install express-streamline
Patch for Express to add support for
Streamline syntax in Express apps.
Supports Express 2 through 5.
``js
var express = require('express-streamline');
var app = express();
// ...
app.use(function (req, res, _) {
if (req.session.userId) {
req.currentUser = User.getById(req.session.userId, _);
}
});
// ...
app.get('/photos', function (req, res, _) {
var photos = req.currentUser.getPhotos(_);
res.render('photos', {
photos: photos,
});
});
`
``
npm install express-streamline --save
You can either require() Express normally and then patch it:
`js`
var express = require('express');
require('express-streamline');
Or just require() this module, which returns the patched Express for
convenience:
`js`
var express = require('express-streamline');
Then, you can write any and all Express handlers in Streamline syntax by just
replacing next with _.
`js
// middleware handlers:
app.use(function (req, res, _) { ... });
app.param('user', function (req, res, _, user) { ... });
// route handlers:
app.get('/:user', function (req, res, _) { ... });
app.post('/:user', function (req, res, _) { ... });
// ... (all verbs supported)
// error handlers:
app.use(function (err, req, res, _) { ... });
`
By default, Streamlined middleware handlers will continue to the nextnext
middleware, while Streamlined route and error handlers won't.
This is generally what you want, but **you can specify whether istrue
called by explicitly returning or false**.
`js`
// middleware to blacklist banned IP addresses,
// but allow all other requests to pass through:
app.use(function (req, res, _) {
var isBanned = db.bannedIPs.search(req.ips, _).length > 0;
if (isBanned) {
res.send(403);
return false; // end the response
}
});
This module also supports Streamline's smart
global context.
If present, the context is reset for every request, so data can safely be
added to it without affecting other requests.
`js
var globals = require('streamline/lib/globals');
// middleware to set a global locale variable on every request,`
// for lower-level modules to use:
app.use(function (req, res, __) {
// parse locale... then:
globals.context.locale = locale;
});
If you run into any issues, file a bug!
See CHANGELOG.md.
MIT. © 2012-2015 Aseem Kishore.
TJ Holowaychuk for the awesome Express, and
Bruno Jouhier for the awesome Streamline.
Seth Yuan's
streamline-express for the
inspiration and motivation.
streamline-express has supported Express 3 for longer than this module, andapp.verb` call).
it currently also supports more advanced Express 3 features (like passing
multiple Streamlined handlers to the same
I believe this module has a cleaner API and more robust implementation,
however, but I'm biased. =) Both modules get the job done just fine!