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 .