Route an URL to a controller, template and/or a static file.
Auto resolves files like so:
- /foo might resolve to controllerPath: foo.js and templatePath: foo.ejs
- /css/style.css might resolve to staticPath: css/style.css
- / resolves to controllerPath: default.js and templatePath: default.tmpl
This behaviour can be changed with customized options.
npm i larvitrouter
All options passed here are optional and the given ones are the default that will be used if they are omitted.
Paths are relative to application root as first priority. If nothing is found there, all modules will be tested as relative to this path to try to find a matching file. The modules are searched in the order given in package.json dependencies.
Simple, use default options:
const Router = require('larvitrouter'),
router = new Router();
Use custom options (the defaults are used in this example):
const LUtils = require('larvitutils');
const lUtils = new lUtils();
const Router = require('larvitrouter');
const router = new Router({
'basePath': process.cwd(),
'cacheMax': 1000
'paths': {
'controller': {
'path': 'controllers',
'exts': 'js'
},
'static': {
'path': 'public',
'exts': false // Match all
},
'template': {
'path': 'public/templates',
'exts': ['tmpl', 'tmp', 'ejs', 'pug']
}
},
'log': new lUtils.Log(),
'routes': [{
'regex': '^/$',
'controllerPath': 'default.js',
'templatePath': 'default.tmpl'
}]
});
const Router = require('larvitrouter');
const router = new Router();
const http = require('http');
http.createServer(function(req, res) {
router.resolve(req.url, function(err, result) {
if (err) throw err;
// A static file was found
if (result.staticFilename !== undefined) {
console.log('static path: ' + result.staticPath);
console.log('static full path: ' + result.staticFullPath);
}
// A controller was found
if (result.controllerPath) {
console.log('controller path: ' + result.controllerPath);
console.log('controller full path: ' + result.controllerFullPath);
}
// A template was found
if (result.templatePath) {
console.log('template path: ' + result.templatePath);
console.log('template full path: ' + result.templateFullPath);
}
res.end('Resolved stuff, see console output for details');
})
}).listen(8001);
- Added cache layer
- Removed larvitfs support