express6
express6 copied to clipboard
🏅 Modern, fast, unopinionated, minimalist web framework.
// npm install express6
import { express } from 'express6'
const app = express()
app.get('/', (req, res) => {
res.send('Hello World')
})
app.listen(3000)
What?
- Clone of express.js v4.17.1 (master branch from Aug 14, 2021)
- Converted to TypeScript
- Updated all dependencies
- Manually merged branch 5 (except new router)
Why?
I love express and would love to see people using it for at least another 10 years!
What about "Unhandled Promise Rejection"?
This has been take care of 👍
ESModules?
It is ready to be exported as esm, but express6 v1 is all about compatibility with express v4, therefore express6 is ships as commonjs.
New
I added req.URL
, a short-hand getter for new URL(this.req, `http://${req.headers.host}`)
.
Types
The types are simpler and a bit different than in express v4. For example, all 3 app.use()
below are valid, but express6 throws a type error on the third app.use()
. In the example below, I recommend using the spread operator.
Middleware with TypeScript
// some middleware
const midi = (req, res, next) => next()
app.get('/', ...[midi, midi], (req, res) => {})
app.get('/', midi, midi, (req, res) => {})
// @ts-ignore
app.get('/', [midi, midi], (req, res) => {})
Error routes with TypeScript
import type { Request, Response, NextFunction } from 'express6'
// @ts-ignore
app.use((err: any, req: Request, res: Response, next: NextFunction) => {
console.log('ERROR:', err)
return res.send(err)
})
Todo
- improve types
- remove all
@ts-ignore
- stricten
tsconfig
Make a PR!
Breaking Changes?
Yes, same as Express v5.
Everything Else?
Same as expressjs.
My Projects
Interested in some of my other projects?
nanojsx |
enable3d |
geckos.io |
five-server |
---|---|---|---|
![]() |
![]() |
![]() |