Performance: Mounting routers with app.use
MEDIUM IMPACT
This affects the server response time and middleware execution order, impacting how quickly routes are matched and handled.
const express = require('express'); const app = express(); const usersRouter = express.Router(); const productsRouter = express.Router(); usersRouter.use((req, res, next) => { console.log('Logging users requests'); next(); }); usersRouter.get('/', (req, res) => { res.send('Users list'); }); productsRouter.get('/', (req, res) => { res.send('Products list'); }); app.use('/users', usersRouter); app.use('/products', productsRouter);
const express = require('express'); const app = express(); app.use((req, res, next) => { console.log('Logging every request'); next(); }); app.get('/users', (req, res) => { res.send('Users list'); }); app.get('/products', (req, res) => { res.send('Products list'); });
| Pattern | Middleware Execution | Route Matching | Response Time Impact | Verdict |
|---|---|---|---|---|
| Global middleware on app.use | Runs on every request | Matches all routes | Increases response time due to unnecessary middleware | [X] Bad |
| Scoped routers with app.use('/path') | Runs only on matching routes | Matches specific routes efficiently | Reduces response time by limiting middleware | [OK] Good |