返回

后端开发人员不可错过的 Express 4.x 用法备忘

前端

Express 4.x 开发备忘录:

1. 初始化项目

npm init -y
npm install express --save

2. 初始化全局变量配置

const express = require('express');
const app = express();
app.set('port', process.env.PORT || 3000);

3. 初始化模板引擎

app.set('view engine', 'pug');
app.set('views', './views');

4. 初始化路由

app.get('/', (req, res) => {
  res.render('index');
});

5. 初始化 MySQL 模块

const mysql = require('mysql');
const pool = mysql.createPool({
  connectionLimit: 10,
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'mydb'
});

6. 初始化日志模块

const winston = require('winston');
const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.Console({ level: 'info' })
  ]
});

7. 初始化中间件

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

8. 启动服务器

app.listen(app.get('port'), () => {
  console.log(`Server is listening on port ${app.get('port')}`);
});

其他常用功能:

  • 文件上传:
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
  res.json({ file: req.file });
});
  • 身份验证:
const passport = require('passport');
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy({
  usernameField: 'email',
  passwordField: 'password'
},
  (email, password, done) => {
    User.findOne({ email: email }, (err, user) => {
      if (err) { return done(err); }
      if (!user) { return done(null, false, { message: 'Incorrect email.' }); }
      if (!user.validPassword(password)) { return done(null, false, { message: 'Incorrect password.' }); }
      return done(null, user);
    });
  }
));
  • 错误处理:
app.use((err, req, res, next) => {
  res.status(err.status || 500);
  res.json({ error: err.message });
});

本备忘录涵盖了 Express 4.x 的一些常用功能,但还有更多功能和特性值得探索。您可以在 Express.js 官方网站上找到更多信息。