koa-isomorphic-router v1.0.1
Koa Isomorphic Router
The fastest elegant modern amiable Koa.js Router โก.
Features
- ๐ฆ Based on top of Trek Router which inspired by Echo's Router.
- ๐ Faster than other Koa.js router solutions.
- ๐
๐ป Express-style routing (
app.get,app.post,app.put,app.delete, etc.) - ๐ฅ Blaze and lightweight router.
- โ๏ธ Tiny Bundle: less than 2.5kB (gzip)
- ๐ช Named URL parameters.
- ๐ฏ Route middleware.
- ๐ฅ Support router layer middlewares.
- ๐ Responds to
OPTIONSrequests with allowed methods. - โ๏ธ Support for
405 Method Not Allowed. - โ Support for
501 Path Not Implemented. - ๐งผ Support
trailing slashandfixed pathby automatic redirection. - โจ Asynchronous support (
async/await). - ๐ TypeScript support.
Note
Currently, this modules support 405 Method Not Allowed
and 501 Path Not Implemented for 'static' routes only
as you can see here.
As soon as possible when I get response here will support 'param' and 'match-any' routes.
For support RegExp in route path also I waiting for
any response here.
Benchmarks
All Koa router solutions depend on path-to-regexp when our solution relies on the trek-router which has the best performance and not over the path-to-regexp only also on others such as (route-recognizer, route-trie, routington ...etc).
- See trek-router benchmarks (
trek-routerbetter perf. thanpath-to-regexp). - See fastify benchmarks (
koa-isomorphic-routerbetter perf. thankoa-router).
Installation
# npm
$ npm install koa-isomorphic-router
# yarn
$ yarn add koa-isomorphic-routerUsage
This is a practical example of how to use.
const Koa = require('koa')
const Router = require('koa-isomorphic-router')
const app = new Koa()
const router = new Router()
router
.get('/product/:id', (ctx, next) => {
ctx.body = { productId: ctx.params.id }
})
app.use(router.routes())
app.listen(5050)API
new Router(options?)
Create a new router.
| Param | Type | Description |
|---|---|---|
| options | Object | |
| options.prefix | String | prefix router paths |
| options.throw | Boolean | throw error instead of setting status and header |
| options.notImplemented | function | throw the returned value in place of the default NotImplemented error |
| options.methodNotAllowed | function | throw the returned value in place of the default MethodNotAllowed error |
router.get|post|put|patch|delete|all(path, ...middlewares)
The http methods provide the routing functionality in router.
Method middleware and handlers follow usual Koa middleware behavior, except they will only be called when the method and path match the request.
// handle a GET / request.
router.get('/', (ctx) => { ctx.body = 'Hello World!' })router.prefix(prePath)
Route paths can be prefixed at the router level:
// handle a GET /prePath/users request.
router
.prefix('/prePath')
.get('/users', (ctx) => { ctx.body = 'Hello World!' })router.route(path)
Lookup route with given path.
// handle a GET /users request.
router
.route('/users')
.get((ctx) => { ctx.body = 'Hello World!' })router.use(...middlewares)
Use given middleware(s). Currently, use middleware(s) for all paths of router isntance.
router.routes()
Returns router middleware which handle a route matching the request.
Support
If you have any problem or suggestion please open an issue here.
Call for Maintainers/Contributors
This module is a attempt to craft an isomorphic fast Router, from/to Koa.js community. So, don't hesitate to offer your help โค๏ธ.
Contributors
| Name | Website |
|---|---|
| Imed Jaberi | https://www.3imed-jaberi.com/ |
License
MIT ยฉ Imed Jaberi