pure-http
The simple web framework for Node.js with zero dependencies.
README
pure-http
Bring the middleware and router to native http.
Installation
- ```bash
- $ npm install --save pure-http
- ```
Usage
Basic server:
- ```js
- const pureHttp = require('pure-http');
- const app = pureHttp();
- app.get('/', (req, res) => {
- res.send('Hello world');
- });
- app.listen(3000);
- ```
Existing server:
- ```js
- const http = require('http');
- const pureHttp = require('pure-http');
- const server = http.createServer();
- const app = pureHttp({ server });
- app.listen(3000);
- ```
Secure server:
- ```js
- const https = require('https');
- const pureHttp = require('pure-http');
- const server = https.createServer({
- key: ...,
- cert: ...,
- });
- const app = pureHttp({ server });
- app.listen(3000);
- ```
Application Options:
- server: Allows to optionally override the HTTP server instance to be used.
> Default: undefined.
- onError: A handler when an error is thrown (Deprecated: It has been removed from 3.0.0).
> Default: ((error, req, res) => res.send(error)).
- onNotFound: A handler when no route definitions were matched (Deprecated: It has been removed from 3.0.0).
> Default: ((req, res) => res.send("Cannot " + req.method + " " + req.url)).
- views: An object to configuration render function.
> Default: undefined.
- dir: A directory for the application's views.
- ext: The default engine extension to use when omitted.
- engine: Registers the given template engine.
- Router Options:
- prefix: Allow append the path before each route.
> Default: undefined.
Router
- ```js
- const { Router } = require('pure-http');
- const router = Router();
- router.get('/', (req, res) => {
- res.send('Hello world');
- });
- /* ... */
- const pureHttp = require('pure-http');
- const app = pureHttp();
- app.use('/api', router);
- app.listen(3000);
- ```
API References
You can read more at API.md.
Benchmarks
Please remember that your application code is most likely the slowest part of your application!
Switching from Express to pure-http will (likely) not guarantee the same performance gains.
- Machine: Ubuntu-s-1vcpu-1gb-sgp1-01, x86-64, Ubuntu 18.04.5 LTS, Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz, 16GB RAM.
- Node: v12.18.4
- Run: Tue, 16 Mar 2021 16:09:01
| Framework | Version | Requests/Sec | Latency |
|---|---|---|---|
| -------------------------- | ---------: | :----------: | ----------: |
| **pure-http | **latest** | **\~ | **15.11ms** |
| pure-http | latest | ~ | 15.39ms |
| tinyhttp | 1.2.17 | ~ | 19.44ms |
| fastify | 3.14.0 | ~ | 29.10ms |
| express | 4.17.1 | ~ | 43.87ms |
- Machine: Ubuntu-s-1vcpu-1gb-sgp1-01, x86-64, Ubuntu 18.04.5 LTS, Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz, 16GB RAM.
- Node: v12.18.4
- Run: Fri, 13 Nov 2020 21:07:21
| Framework | Version | Requests/Sec | Latency |
|---|---|---|---|
| -------------------------- | --------: | :----------: | ----------: |
| **pure-http | **2.x.x** | **\~ | **10.92ms** |
| pure-http | 2.x.x | ~ | 11.12ms |
| polka | 0.5.2 | ~ | 13.03ms |
| express | 4.17.1 | ~ | 26.86ms |
| fastify | 3.8.0 | ~ | 35.54ms |
探客时代
