ExpressAdvanced
Express Best Practices
Structure, error handling, logging, environment, code-split — Express best practices বাংলায়।
13টি অংশবাংলা ভাষায়
1. Structure App Properly
src/
├── app.js # express app (middleware, routes)
├── server.js # listen (separate)
├── config/ # db, env config
├── models/ # mongoose schemas
├── controllers/ # business logic
├── routes/ # route definitions
├── middleware/ # auth, validate, error
├── validators/ # zod schemas
├── utils/ # helpers
└── __tests__/ # tests2. Use Controller Pattern
// routes — ডাক |
router.get("/", userController.getAll);
// controllers — logic |
const getAll = async (req, res, next) => {
try {
const users = await User.find();
res.json(users);
} catch (err) { next(err); }
};3. Central Error Handler
// এক জায়গায় সব error
app.use((err, req, res, next) => {
logger.error(err.stack);
if (err.name === "ValidationError") {
return res.status(400).json({ error: "Data invalid" });
}
if (err.code === 11000) { // duplicate key
return res.status(409).json({ error: "ডুপ্লিকেট" });
}
res.status(err.status || 500).json({
error: err.message || "Server error",
});
});4. Use Environment Config
config/env.jsjavascript
javascript
require("dotenv").config();
module.exports = {
NODE_ENV: process.env.NODE_ENV || "development",
PORT: process.env.PORT || 5000,
MONGO_URI: process.env.MONGO_URI,
JWT_SECRET: process.env.JWT_SECRET,
JWT_EXPIRES: process.env.JWT_EXPIRES || "1d",
FRONTEND_URL: process.env.FRONTEND_URL,
};
// ব্যবহার
const config = require("../config/env");
console.log(config.NODE_ENV);5. Logging
utils/logger.jsjavascript
javascript
const winston = require("winston");
const logger = winston.createLogger({
level: process.env.NODE_ENV === "production" ? "info" : "debug",
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: "logs/error.log", level: "error" }),
new winston.transports.File({ filename: "logs/all.log" }),
],
});
if (process.env.NODE_ENV !== "production") {
logger.add(new winston.transports.Console({ format: winston.format.simple() }));
}
module.exports = logger;Checklist
| ✔ | অভ্যাস |
|---|---|
| ✔ | app.js ও server.js আলাদা (test friendly) |
| ✔ | Controller pattern ব্যবহার |
| ✔ | Central error handling |
| ✔ | Environment variables (.env) |
| ✔ | Validation (Zod) সর্বত্র |
| ✔ | Logging (winston) |
| ✔ | Test (jest+supertest) |
| ✔ | Security (helmet, rate-limit, cors) |
| ✔ | API versioning (/api/v1) |
| ✔ | Pagination ও filtering |
| ✔ | Gitignore + lock file |
মূলমন্ত্র
clean structure, consistent pattern, error handling, security, testing — এই 5 জিনিস দিয়ে professional Express app বানানো যায়।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।