koa-isomorphic-router
v1.0.1
Published
The fastest elegant modern amiable Koa.js Router ⚡.
Downloads
279
Maintainers
Readme
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
OPTIONS
requests with allowed methods. - ⛔️ Support for
405 Method Not Allowed
. - ❌ Support for
501 Path Not Implemented
. - 🧼 Support
trailing slash
andfixed path
by 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).
- [x] See trek-router benchmarks (
trek-router
better perf. thanpath-to-regexp
). - [x] See fastify benchmarks (
koa-isomorphic-router
better perf. thankoa-router
).
Installation
# npm
$ npm install koa-isomorphic-router
# yarn
$ yarn add koa-isomorphic-router
Usage
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/ |