pricking-koa
a simple node framework based on koa2, in order to improve development efficiency.
WARNING: now only as an api server.
focus
rootPath is application root directory
- The rootPath must contain
controllers
folder to load router. - if want add extra middlewares, you can add
middlewares
folder in rootPath.
Necessary directory convention specification
src
├── controllers
├── extends
│ └── context.ts
└── middlewares
Don't design middleware that depends on execution order.(if necessary, only export a compose middleware)
It's worth mentioning that the middleware loading will traverse every possible file under the folder.
decorator
how to use it?
import { Controller, Description, Get } from 'pricking-koa/dist/utils/decorator';
import BaseController from 'pricking-koa/dist/controllers/BaseController';
@Controller('/v3/books')
class AnalyseController extends BaseController {
@Index(['/', '(.*)'])
@Description()
async index() {
this.ctx.render('book/index.ejs', { currentTime: Date.now() });
}
@Get('/info')
@Description('getBookInfo')
async getBookInfo() {
this.ctx.success({});
}
@Post('/search')
@Description('search')
async searchBook() {
this.ctx.success({});
}
@Get('/origin')
@Description('getBookOriginDetail')
async getBookOriginDetail() {
this.ctx.success({});
}
}
export = AnalyseController;
import { PrickingApplication } from 'pricking-koa';
new PrickingApplication({
rootPath: __dirname,
port: 3002,
env: 'dev',
debug: true,
});
middleware
export = (options: IOptions) => async (ctx, next) => {
console.log(options.env);
console.log('hello');
await next();
console.log('end');
};
target