Automatic Model / Controller Loader for Node(express.js)
- Write a controller and get all route pattern you want.
- Compatible with other middlewares including view renders.
npm install ovenware --save####Require...
varovenware=require('ovenware');####Config...
ovenware(app);####Controller file Default path of controllers: ./lib/controllers/
in index.js:
exports.index=function(req,res){res.send('hello express');};Checkout the examples.
####Action Mapping
route http method function of ctrl
:resource get index
:resource post create
:resource/:id get get
:resource/:id put update
:resource/:id del del
All routes can be customized by setting, see Default values; and also can be changed by controller api singly, see APIs - Routes.
####Resource Resource name will be the file name of the controller, if there is no alias set for the controller, see APIs - Alias.
####Options
ovenware(app[,options])options see Default values
####Controller APIs #####Alias Set alias for the controller.
exports.alias='name_you_want';#####Routes Set routes for the controller.
exports.routes={entry: {method: 'get',path: '/index'}};#####Model Get model object.
/** * get model object by given controller file name * * @param {String} modelName optional, undefined for the model has * the the same name as this controller * @return {Object} model object */req.model([modelName])exports.model([modelName])for exmample:
exports.get=function(req,res){req.model('abc');};// orexports.todo=function(){this.model();// this === exports};#####Ctrl Get controller object.
/** * get ctrl object by given controller file name * * @param {String} ctrlName optional, undefined for self * @return {Object} ctrl object */req.ctrl([ctrlName])exports.ctrl([ctrlName])for exmample:
exports.get=function(req,res){req.ctrl();// => return this exports};// orexports.todo=function(){exports.ctrl('abc');};####Default values
{root: './lib',// root dirctrl: 'controllers',// controllers dirmodel: 'models'// model dirextname: 'js|coffee',// defult extname of the files to loadprefix: '/',// String or RegExpaliases: {'index': ''},routes: {'index': {method: 'get',path: ''},'create': {method: 'post',path: ''},'get': {method: 'get',path: '/:id'},'update': {method: 'put',path: '/:id'},'del': {method: 'del',path: '/:id'}}}MIT