0.2.3 • Published 8 years ago

ovenware v0.2.3

Weekly downloads
30
License
MIT
Repository
github
Last release
8 years ago

Ovenware

NPM version build status Test coverage NPM Monthly Downloads Dependencies License Tips

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.

Install

npm install ovenware --save

Simple Usage

####Require...

var ovenware = 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.

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

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');
};
// 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
 */
req.ctrl([ctrlName])
exports.ctrl([ctrlName])

for exmample:

exports.get = function(req, res) {
  req.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
  extname: 'js|coffee', // defult extname of the files to load
  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

0.2.3

8 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago

0.0.1

9 years ago