pure-http

The simple web framework for Node.js with zero dependencies.

Usage no npm install needed!

<script type="module">
  import pureHttp from 'https://cdn.skypack.dev/pure-http';
</script>

README

pure-http

Bring the middleware and router to native http.

depfu npm bundle size codefactor build coverage status eslint: airbnb code style: prettier

cover

Installation

$ npm install --save pure-http

Usage

Basic server:

const pureHttp = require('pure-http');

const app = pureHttp();

app.get('/', (req, res) => {
  res.send('Hello world');
});

app.listen(3000);

Existing server:

const http = require('http');
const pureHttp = require('pure-http');

const server = http.createServer();

const app = pureHttp({ server });

app.listen(3000);

Secure server:

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

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 (with cache) latest ~ 6,349 15.11ms
pure-http latest ~ 6,255 15.39ms
tinyhttp 1.2.17 ~ 4,942 19.44ms
fastify 3.14.0 ~ 3,310 29.10ms
express 4.17.1 ~ 2,188 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 (with cache) 2.x.x ~ 8,792 10.92ms
pure-http 2.x.x ~ 8,633 11.12ms
polka 0.5.2 ~ 7,364 13.03ms
express 4.17.1 ~ 3,588 26.86ms
fastify 3.8.0 ~ 2,702 35.54ms

See more: BENCHMARKS

License

The code in this project is released under the MIT License.

FOSSA Status