Performance: Creating an Express Router
This affects the server-side routing performance and how efficiently requests are matched and handled, impacting response time and server load.
const express = require('express'); const app = express(); const userRouter = express.Router(); const productRouter = express.Router(); userRouter.get('/', (req, res) => { res.send('Users list'); }); productRouter.get('/', (req, res) => { res.send('Products list'); }); app.use('/users', userRouter); app.use('/products', productRouter);
const express = require('express'); const app = express(); app.get('/users', (req, res) => { res.send('Users list'); }); app.get('/products', (req, res) => { res.send('Products list'); }); // Many routes defined directly on app
| Pattern | Middleware Calls | Route Matching | Request Handling Time | Verdict |
|---|---|---|---|---|
| All routes on app instance | All middleware runs on every request | Matches every route sequentially | Higher as routes increase | [X] Bad |
| Routes grouped with Express Router | Middleware scoped to routers | Matches routes within router scope | Lower and scalable | [OK] Good |
express.Router() in an Express app?express.Router() doesRouter() as a function on the express object.express.Router() correctly. const router = new express.Router(); wrongly uses new. const router = express.createRouter(); uses a non-existent method. const router = Router(); calls Router() without express../api/users?
const express = require('express');
const app = express();
const router = express.Router();
router.get('/users', (req, res) => {
res.send('User list');
});
app.use('/api', router);
app.listen(3000);app.use('/api', router)/api, so routes inside router are prefixed with /api./users/users, so combined with the mount path, the full path is /api/users.const express = require('express');
const router = express.Router;
router.get('/info', (req, res) => {
res.send('Info page');
});
module.exports = router;express.Router without parentheses, so it assigns the function itself, not an instance.express.Router() to create a router instance that supports route methods./users and one for /products. How do you correctly mount them in your Express app so that requests to /users/list and /products/list work as expected?/users and /products, mount each router with those paths using app.use()./list, causing conflicts. app.get('/users', usersRouter); app.get('/products', productsRouter); uses app.get incorrectly with routers.Pass the test and this pattern moves unknown