turbo-serv
Version:
Web Server based on Turbo HTTP
92 lines (60 loc) • 2 kB
Markdown
# Turbo Server
A Web Server based on [turbo HTTP](https://www.npmjs.com/package/turbo-http)
* Twice as fast as other node frameworks based on http module.
* Batteries included. Static files, sessions, router, body parser, cors by default.
* Configure via config file.
## Installation
```
$ npm install turbo-serv --save
```
## Create an app
```
$ mkdir my-app && cd my-App
$ npm init
```
Edit `start` in your `package.json`. Turbo server uses mjs modules. So works on
the latest nodejs with experimental modules set.
```
{
"name": "my-app",
"scripts": {
"start": "node --experimental-modules index.mjs"
},
}
```
Create `index.mjs` in `my-app` folder
```
import App from 'turbo-serv'
const app = new App()
const router = app.getRouter()
router.get('/', function () {
this.res.send('Hello World')
})
app.listen(8080)
```
run
```
$ npm start
```
## App
`const app = new App()` creates a new app.
`app.listen(port)`. If `process.env.PORT` is set, that is taken as PORT. If not
the `port` given to `app.listen` is taken. If both are not given, 5000 is taken as PORT.
## Static files
Statics files are served from `public` folder by default. Just create a `public` folder
in `my-app` and put your static files there.
## Router
Get the router with `app.getRouter()`.
Set your routes with `router.get` and `router.post`
## Handlers
All handlers are called with the Request object as `this`. Response object is
`this.res`.
If the handler returns a value other than `undefined` the next handler is called
with the value. If the handler is done, don't `return` anything.
Handlers can be both asynchronous or synchronous.
## Response Object
**send(data)** - If data is string or Buffer type, set the Content-Type before calling `send`. If type is Object data is sent as 'application/json'.
**sendFile(absPath)** - Given an absolute path, will send a file as response.
**redirect(url)** - Sends a 302 statusCode and redirects to given url
## Todo
1. Nested Routers