返回
后端开发人员不可错过的 Express 4.x 用法备忘
前端
2024-01-06 16:09:59
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 官方网站上找到更多信息。