Introdução
tinyhttp é uma estrutura da web moderna tipo Express escrita em TypeScript e compilada para ESM nativo que usa um mínimo de dependências para evitar legado inferno.
Express é uma estrutura de aplicativo da web Node.js mínima e flexível que fornece um conjunto robusto de recursos para aplicativos da web e móveis.
Aqui está uma pequena lista dos recursos mais importantes que o tinyhttp possui:
- 2,5x mais rápido do que Express
- Suporte completo para middleware Express
- Suporte a middleware assíncrono
- Suporte nativo a ESM e CommonJS
- Sem dependências legadas, apenas o próprio JavaScript
- Tipos prontos para uso
Comparação básica
<”critérios | <”tinyhttp | express v4 |
---|---|---|
Versão Node.js com suporte mínimo | 12.4.0 | 0.10.0 |
Versão ECMAScript mínima com suporte | ES2019 | ES5 (?) |
req / res extensions |
||
Cobertura de teste | 92% | 100% |
Compilado para ESM nativo | ||
Suporte TypeScript | ||
Tamanho do pacote (apenas núcleo) | 35,2 kB | 208 kB |
Middlewares integrados |
Referência
<”req/s
| <”transfer/sec
| latência |
|
---|---|---|---|
@ tinyhttp/app (sem extensões) | 24575 | 3,81 MB | 3,37 ms |
@ tinyhttp/app (esm) | 22820 | 3,54 MB | 4,04 ms |
@ tinyhttp/app (cjs) | 22637 | 3,51 MB | 4,08 ms |
[email protected] | 12986 | 2 MB | 7,11 ms |
Nota : Os benchmarks não são completamente precisos e são diferentes em cada execução e em cada máquina. Você precisa comparar proporções em vez de valores absolutos.
Conclusão : tinyhttp (sem extensões req
/ res
extras) é cerca de 1,9x mais rápido do que Express.
Instalação
Você pode usar qualquer gerenciador de pacotes para instalar o tinyhttp e o Express. Usarei npm para demonstração.
- tinyhttp :
npm i @ tinyhttp/app
- Express :
npm install express
Olá, mundo
As estruturas do aplicativo Express e tinyhttp são bastante semelhantes. Se você conhece o Express, também conhece o tinyhttp.
tinyhttp
importar {App} de'@ tinyhttp/app' const app=new App () const PORT=3000 aplicativo .get ('/', (_, res)=> void res.send ('Olá, mundo
')) .listen (PORT, ()=> console.log (`Iniciado em http://localhost: $ {PORT}!`))
Expresso
const express=require ('express'); const app=express (); app.get ('/', (req, res)=> { res.send ('Olá, mundo'); }); app.listen (3000, ()=> console.log ('ouvindo na porta 3000'));
Você provavelmente percebeu que em vez de require
, usamos importações de ESM. tinyhttp é recomendado para ser usado com “ ESM nativo “. Ao contrário do Express, tinyhttp é compilado para os sistemas de módulo ESM e Common.js, embora ainda seja muito menor do que o Express.
Você pode usar a sintaxe import
/ export
em Node.js com ele. Para configurar um pacote Node ESM, coloque "type":"module"
no arquivo package.json como este:
{ "tipo":"módulo" }
Outra opção seria usar uma extensão .mjs
. Então, você não precisa colocar esse campo "type"
em package.json. Para obter mais informações, verifique a documentação de módulos ECMAScript Node.js .
Como a maior parte do middleware Express popular também usa módulos desatualizados, o tinyhttp fornece um conjunto de suas reescritas/remakes de wares populares, como logger, sessão e assim por diante.
Roteamento
Vamos lidar com alguns roteamentos básicos em tinyhttp e Express. Express contém muitas funções auxiliares em seus objetos req
e res
. tinyhttp implementa totalmente a API Express por meio de métodos como res.send
, res.download
, res.redirect
e assim por diante.
tinyhttp
importar {App} de'@ tinyhttp/app' importar {uma vez} de'eventos' const app=new App () const PORT=3000 app.get ('/', (req, res)=> { res.send ('Enviou um GET!') }) app.post ('/', assíncrono (req, res)=> { //Nada complexo aqui, nós apenas ouvimos o evento'data'e retornamos os dados como uma promessa para uma variável `data` dados const=esperar uma vez (req,'dados'). then (d=> d.toString ()) //E então nós enviamos res.end (`Enviou alguns dados: $ {data}`) }) app.listen (PORT, ()=> console.log (`Iniciado em http://localhost: $ {PORT}!`))
Expresso
var express=require ('express'); var app=express (); app.get ('/', função (req, res) { res.send ("Envie um GET!"); }); app.post ('/', função (req, res) { res.send ("olá'! \ n"); }); app.listen (3000);
Conclusão
tinyhttp é rápido e leve. Você pode começar a usá-lo hoje para aplicativos de back-end. O repositório tinyhttp contém muitos exemplos , incluindo MongoDB e GraphQL .
A postagem tinyhttp x Express: Qual é melhor? apareceu primeiro no LogRocket Blog .