Express routing templates provides a simple micro-templating syntax for building strings from a template and a request object.
$ npm install ert
var ert = require('ert');
var express = require('express');
var app = express();
app.get('/:package', function (req, res) {
res.redirect(ert(req, '/package/:package'));
});
app.listen(3000);
e.g.
ert(req, '/foo/bar/[req.parms.x || "default-x"]')
Code in squre brackets ([ and ]) is evalutated as a JavaScript expression. It has req available as an object. It also supports shortcuts, so you could write the above as:
ert(req, '/foo/bar/[:x || "default-x"]')
There are characters that are shortucts, the defaults of these are:
exports.shortcutMap = {
':': 'req.params',
'$': 'req.query',
'@': 'req.body'
};
These can be used directly like:
ert(req, '/foo/bar/:x')
which is equivallent to:
ert(req, '/foo/bar/[req.params && req.params["x"]]')
Transforms the string with req and returns the resulting string. It caches the compiled function so should be pretty good for performance.
Compiles src and returns a JavaScript expression as a string. This can be used to generate client side code with something like:
function client(name) {
return 'function name(req){return ' + ert.compile(src) + '}';
}
Compiles src and returns a function which expects a single argument, request.
MIT