⚠ The project is in development. Please don't use in production.
tinyhttp is a modern Express-like web framework written in TypeScript and compiled to native ESM, that uses a bare minimum amount of dependencies trying to avoid legacy hell.
Here is a short list of most important features that tinyhttp has:
- ⚡ 2.5x faster than Express
- ⚙ Full Express middleware support
- ↪ Async middleware support
- ☑ Native ESM and CommonJS support
- 🚀 No legacy dependencies, just the JavaScript itself
- 🔨 Types out of the box
- 🗜 4x smaller than Express
To get started, visit tinyhttp website.
tinyhttp requires Node.js 12.4.0 or newer. It is recommended to use pnpm, although it isn't required.
# npm
npm i @tinyhttp/app
# pnpm
pnpm i @tinyhttp/app
# yarn
yarn add @tinyhttp/app
You can see the documentation here.
The app structure is quite similar to Express, except that you need to import App
from @tinyhttp/app
instead of default import from express
.
import { App } from '@tinyhttp/app'
import { logger } from '@tinyhttp/logger'
const app = new App()
app
.use(logger())
.use(function someMiddleware(req, res, next) {
console.log('Did a request')
next()
})
.get('/', (_, res) => {
res.send('<h1>Hello World</h1>')
})
.get('/page/:page/', (req, res) => {
res.status(200).send(`You just opened ${req.params.page}`)
})
.listen(3000)
For more examples, check examples folder.
tinyhttp offers a list of premade middleware for common tasks.
Search and explore the full list at middleware search page.
To compare tinyhttp with Express and Polka (another Express-like framework), see COMPARISON.md
To see benchmark comparison between tinyhttp, polka and express, check benchmark folder.
See CONTRIBUTING.md.
MIT © v1rtl
Thanks goes to these wonderful people (emoji key):
v 1 r t l 💡 🔌 📆 🚧 💻 |
Matt 🔌 |
Nasmevka 📖 |
elianiva 💡 💻 |
Katja Lutz 💡 |
Arnovsky 🔌 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!
These amazing people supported tinyhttp financially:
molefrog |