koa-architect
About
Reads a folder with middleware and routes and reduces them to middleware using koa-mount and koa-trie-router.
That eventually allows you run your app extremely simple:
const Koa = const architect = let app = forlet middleware of architect app
All of you need is keep in mind next things:
- each your file should returns a middleware or routes
- if it returns middleware then it will be pushed to the middleware stack
- if it returns routes then they will be reduced to middleware using a router
How does exactly your routes will be reduced to middleware?
// router.use(fn)exports {} // router.get('/', fn)exportsget = { } // router.post('/foo', fn)// router.post('/bar/:id', fn)exportspost = { } { }
Example
Assume, we have next folder tree and code:
middleware/
middleware/01-foo/index.js
middleware/02-bar/index.js
middleware/route/index.js
middleware/nested/index.js
middleware/nested/middleware/index/index.js
middleware/nested/middleware/baz/index.js
middleware/01-foo/index.js
// Middlewaremodule { // Doing here some work and go next ctxstatefoo = 1 return }
middleware/02-bar/index.js
// Middlewaremodule { // Doing here some work and go next ctxstatebar = 1 return }
middleware/route/index.js
// Routesexportsget = { ctxresponsebody = ctxstate } exportspost = { ctxresponsebody = ctxparamsid }
middleware/nested/index.js
// Nested middleware and/or routes const path = const architect = // Since this folder contains nested middleware/routes// we need use koa-architect to read them exportsuse = architect
middleware/nested/middleware/index/index.js
// Routesexports { ctxresponsebody = ctxoriginalUrl}
middleware/nested/middleware/baz/index.js
// Routesexportsget = { ctxresponsebody = ctxoriginalUrl }
And we launch our app using this way:
const Koa = const architect = let app = forlet middleware of architect app
Thus we will get a server which handle requests next way:
GET --> /
GET <-- 404 "Not Found"
GET --> /route
GET <-- 200 {"foo":1,"bar":1}
POST --> /route/test/1
POST <-- 200 "1"
GET --> /nested
GET <-- 200 "/nested"
GET --> /nested/baz
GET <-- 200 "/nested/baz"
See test/fixtures for details.
Package managers
NPM
npm install koa-architect
You could find this module in npm like koa-architect.