AI Skill Library

Node.js & Express

Event loop, streams, middleware, routing, error handling, production tips.

nodejsjavascriptbackend
# Node.js & Express

## Event loop phases
timers -> pending callbacks -> idle/prepare -> poll -> check (setImmediate) -> close
- `process.nextTick` runs before next phase (avoid abuse).
- `setImmediate` runs in check phase, after I/O.

## Streams
```js
createReadStream('big.csv').pipe(createGzip()).pipe(createWriteStream('big.csv.gz'))
```
Use streams for large files; avoid buffering entire content in memory.

## Express app
```ts
import express from 'express'
const app = express()
app.use(express.json())

const router = express.Router()
router.get('/:id', async (req, res, next) => {
  try {
    const item = await db.find(req.params.id)
    if (!item) return res.status(404).json({ error: 'Not found' })
    res.json(item)
  } catch (err) { next(err) }
})
app.use('/items', router)

// 4-param error handler
app.use((err, req, res, next) => {
  res.status(err.status ?? 500).json({ error: err.message })
})
app.listen(3000)
```

## Middleware order
1. helmet (security headers)
2. cors
3. rate limiting
4. body parsing
5. authentication
6. routes
7. 404 handler
8. error handler

## Production checklist
- `helmet()` for security headers
- `compression()` for gzip
- `express-rate-limit` for throttling
- Structured logging (pino)
- Graceful shutdown on SIGTERM
- `NODE_ENV=production`

API: /api/skills/nodejs-express