express

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Critical Patterns

关键模式

Route Organization (REQUIRED)

路由组织(必填)

javascript
// ✅ ALWAYS: Separate routes by resource
// routes/users.js
const router = express.Router();

router.get('/', usersController.list);
router.get('/:id', usersController.getById);
router.post('/', validate(createUserSchema), usersController.create);
router.put('/:id', validate(updateUserSchema), usersController.update);
router.delete('/:id', usersController.delete);

module.exports = router;
javascript
// ✅ 务必:按资源拆分路由
// routes/users.js
const router = express.Router();

router.get('/', usersController.list);
router.get('/:id', usersController.getById);
router.post('/', validate(createUserSchema), usersController.create);
router.put('/:id', validate(updateUserSchema), usersController.update);
router.delete('/:id', usersController.delete);

module.exports = router;

Error Handling (REQUIRED)

错误处理(必填)

javascript
// ✅ ALWAYS: Centralized error handler
app.use((err, req, res, next) => {
  console.error(err.stack);
  
  const status = err.status || 500;
  const message = err.message || 'Internal Server Error';
  
  res.status(status).json({
    error: { message, status }
  });
});

// ✅ Async wrapper for async route handlers
const asyncHandler = (fn) => (req, res, next) =>
  Promise.resolve(fn(req, res, next)).catch(next);

javascript
// ✅ 务必:集中式错误处理器
app.use((err, req, res, next) => {
  console.error(err.stack);
  
  const status = err.status || 500;
  const message = err.message || 'Internal Server Error';
  
  res.status(status).json({
    error: { message, status }
  });
});

// ✅ 用于异步路由处理器的异步包装器
const asyncHandler = (fn) => (req, res, next) =>
  Promise.resolve(fn(req, res, next)).catch(next);

Decision Tree

决策树

Need validation?           → Use Joi or Zod middleware
Need auth?                 → Use Passport.js or JWT middleware
Need logging?              → Use Morgan middleware
Need CORS?                 → Use cors middleware
Need rate limiting?        → Use express-rate-limit

需要验证?           → 使用Joi或Zod中间件
需要认证?           → 使用Passport.js或JWT中间件
需要日志?           → 使用Morgan中间件
需要跨域资源共享?    → 使用cors中间件
需要速率限制?        → 使用express-rate-limit

Commands

命令

bash
npm init -y
npm install express
npm install -D nodemon
npm run dev
bash
npm init -y
npm install express
npm install -D nodemon
npm run dev