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 .

Source link