JavaScripting

The definitive source of the best
JavaScript libraries, frameworks, and plugins.


  • ×

    ✨ The simple web framework for Node.js with zero dependencies.
    Filed under  › 

    • 🔾24%Overall
    • 161
    • 8 days
    • 🕩8
    • 👥4

    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

    Show All