Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zedgu/koa-ovenware
Automatic Model / Controller Loader for Koa
https://github.com/zedgu/koa-ovenware
Last synced: 2 months ago
JSON representation
Automatic Model / Controller Loader for Koa
- Host: GitHub
- URL: https://github.com/zedgu/koa-ovenware
- Owner: zedgu
- License: mit
- Created: 2015-01-31T13:11:20.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-06-12T07:18:06.000Z (over 7 years ago)
- Last Synced: 2024-10-01T02:21:41.251Z (2 months ago)
- Language: JavaScript
- Size: 16.6 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-koa - koa-ovenware - Koa 的自动模型/控制器加载器。 ![](https://img.shields.io/github/stars/zedgu/koa-ovenware.svg?style=social&label=Star) ![](https://img.shields.io/npm/dm/koa-ovenware.svg?style=flat-square) (仓库 / 中间件)
README
Koa-Ovenware
=======[![NPM version][npm-image]][npm-url]
[![build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
[![NPM Monthly Downloads][npm-download]][npm-url]
[![Dependencies][david-image]][david-url]
[![License][license-image]][license-url]
[![Tips][tips-image]][tips-url]Automatic Model / Controller Loader for Koa
* Write a controller and get all route pattern you want.
* Compatible with other middlewares including view renders.Install
-------
```sh
npm install koa-ovenware --save
```Simple Usage
------------
####Require...
```js
var kow = require('koa-ovenware');
```####Config...
```js
kow(app);
```####Controller file
Default path of controllers: ./lib/controllers/in index.js:
```js
exports.index = function *() {
this.body = 'hello koa';
};
```
Checkout the [examples](https://github.com/zedgu/koa-ovenware/tree/master/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](#default-values); and also can be changed by controller api singly, see [APIs - Routes](#routes).####Resource
Resource name will be the file name of the controller, if there is no alias set for the controller, see [APIs - Alias](#alias).APIs
----
####Options
```js
kow(app[, options])
```
`options` see [Default values](#default-values)####Controller APIs
#####Alias
Set alias for the controller.```js
exports.alias = 'name_you_want';
```#####Routes
Set routes for the controller.```js
exports.routes = {
entry: {
method: 'get',
path: '/index'
}
};
```#####Model
Get model object.```js
/**
* 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:
```js
exports.get = function *() {
this.model('abc');
};
// or
exports.todo = function() {
this.model(); // this === exports
};
```#####Ctrl
Get controller object.```js
/**
* 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:
```js
exports.get = function *() {
this.ctrl(); // => return this exports
};
// or
exports.todo = function() {
exports.ctrl('abc');
};
```Global configuration
--------------------
####Default values
```js
{
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[npm-image]: https://img.shields.io/npm/v/koa-ovenware.svg?style=flat-square
[npm-url]: https://npmjs.org/package/koa-ovenware
[travis-image]: https://img.shields.io/travis/zedgu/koa-ovenware.svg?style=flat-square
[travis-url]: https://travis-ci.org/zedgu/koa-ovenware
[coveralls-image]: https://img.shields.io/coveralls/zedgu/koa-ovenware.svg?style=flat-square
[coveralls-url]: https://coveralls.io/r/zedgu/koa-ovenware?branch=master
[david-image]: http://img.shields.io/david/zedgu/koa-ovenware.svg?style=flat-square
[david-url]: https://david-dm.org/zedgu/koa-ovenware
[npm-status]: https://nodei.co/npm/koa-ovenware.png?downloads=true
[npm-status-url]: https://nodei.co/npm/koa-ovenware/
[license-image]: http://img.shields.io/npm/l/koa-ovenware.svg?style=flat-square
[license-url]: https://github.com/zedgu/koa-ovenware/blob/master/LICENSE
[npm-download]: http://img.shields.io/npm/dm/koa-ovenware.svg?style=flat-square
[tips-image]: http://img.shields.io/gittip/zedgu.svg?style=flat-square
[tips-url]: https://www.gittip.com/zedgu/