koa-ovenware
v0.5.0
Published
Automatic Model / Controller Loader for Koa
Downloads
32
Maintainers
Readme
Koa-Ovenware
Automatic Model / Controller Loader for Koa
- Write a controller and get all route pattern you want.
- Compatible with other middlewares including view renders.
Install
npm install koa-ovenware --save
Simple Usage
####Require...
var kow = require('koa-ovenware');
####Config...
kow(app);
####Controller file Default path of controllers: ./lib/controllers/
in index.js:
exports.index = function *() {
this.body = 'hello koa';
};
Checkout the examples.
Conventions
####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.
APIs
####Options
kow(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
*/
this.model([modelName])
exports.model([modelName])
for exmample:
exports.get = function *() {
this.model('abc');
};
// or
exports.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
*/
this.ctrl([ctrlName])
exports.ctrl([ctrlName])
for exmample:
exports.get = function *() {
this.ctrl(); // => return this exports
};
// or
exports.todo = function() {
exports.ctrl('abc');
};
Global configuration
####Default values
{
root: './lib', // root dir
ctrl: 'controllers', // controllers dir
model: 'models' // model dir
format: 'json', // format by default
prefix: '/', // String or RegExp
aliases: {
'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'
}
}
}
License
MIT