A router for spirit.
When combined with spirit, it provides a low level extensible framework (it is not a full stack batteries included framework or a boilerplate). It is meant as an alternative to Express, Koa, and Hapi.
It emphasizes clear separation of code between HTTP and your own code. Routes are normal javascript functions. That means a route can be as simple as:
function() { return "Hello World" }
This makes testing, re-using, and reading your code much easier, as "it's just javascript".
-
Routes are just normal functions that return something. No more proprietary (req, res, next) functions. This makes it easier to test, re-use, read your routes.
-
Compatible with most Express middleware. (via spirit-express) Re-using existing code is important.
-
Error handling with then & catch. Promises are "first class". And so async/await compatible.
-
Fast, fast!. It outperforms other web frameworks (Express, Koa, Hapi). Article showing the performance difference.
const {adapter} = require("spirit").node
const route = require("spirit-router")
const http = require("http")
const greet = (name) => {
return "Hello, " + name
}
const app = route.define([
route.get("/:name", ["name"], greet)
])
http.createServer(adapter(app)).listen(3000)
More examples in can be found here.
To install:
npm install spirit spirit-router
Resources for getting started:
There are a set of videos that quickly go over different topics in spirit.
All contributions are appreciated and welcomed.
For backwards incompatible changes, or large changes, it would be best if you opened an issue before hand to outline your plans (to avoid conflict later on).
The code style omits ending semi-colons. It also does not use camel case. And one-liners should be avoided unless it's very clear.
To run tests, use make test
. This will also build changes to src/*, if you do not have "make" installed, you can look at the Makefile to see the steps to accomplish the task.