express初探(一)
使用express
- express 下载,安装与使用,express中间件机制
- 开发接口,连接数据库,实现登录,日志记录
- express中间件的原理
安装express
npm install express-generator -g
通过express命令生成项目
express express-test
运行express项目
npm install
npm start
为了方便开发,防止代码重启
npm i nodemon cross-env --save-dev
在项目目录中的package.json文件中,找到配置项scripts,添加:
"dev":"cross-env NODE_ENV=dev nodemon ./bin/www"
app.js文件
- 各个插件的作用
- 思考各个插件的实现原理
- 处理get请求和post请求
express如何处理路由
在app.js文件中处理公共部分
// app.js
app.use('/api/blog', blogRouter);
在routes/blogRouter中处理
// routes/blogRouter中
var express = require('express');
var router = express.Router();
router.get('/list', function (req, res, next) {
res.json({
errno: 0,
data: [1, 2, 3]
})
});
router.get('/detail', function (req, res, next){
res.json({
errno: 1,
data: [5, 6, 7]
})
})
module.exports = router;
访问采用/api/blog/list或者/api/blog/detail
res.json()可以直接返回一个json格式文件,不必再设置请求头
中间件机制
- 有很多app.use
- 代码中的next参数是什么
举例
//app.js文件
const express = require('express');
// 本次http请求的实例
const app = express()
app.use((req, res, next) => {
console.log('请求开始...', req.method, req.url);
next();
})
app.use((req, res, next) => {
// 假设在处理cookie
req.cookie = {
userId: 'abc123'
}
next();
})
app.use((req, res, next) => {
// 假设处理 post data
setTimeout(() => {
req.body = {
a: 100,
b: 2
}
})
next();
})
app.get('/api', (req, res, next) => {
console.log('get /api 路由');
next();
})
app.post('/api', (req, res, next) => {
console.log('post /api 路由');
next();
})
// 模拟登陆验证
// function loginCheck(req, res, next) {
// console.log('模拟登陆成功');
// setTimeout(() => {
// next()
// })
// }
function loginCheck(req, res, next) {
console.log('模拟登陆失败');
setTimeout(() => {
res.json({
errno: -1,
msg:'登陆失败'
})
})
}
app.get('/api/get-cookie', loginCheck,(req, res, next) => {
console.log('get /api/get-cookie');
res.json({
errno: 0,
data: req.cookie,
})
})
app.post('/api/get-post-data', (req, res, next) => {
console.log('post /api/get-post-data')
console.dir(req.body)
res.json({
errno: 0,
data: req.body
})
})
app.use((req, res, next) => {
console.log('处理 404')
res.json({
errno: -1,
msg:'404 not found'
})
})
app.listen(8000, () => {
console.log('server is running on port 8000');
console.log('click on:http://localhost:8000');
})
总结
- 初始化代码,各个插件的作用
- express如何处理路由
- express中间件

浙公网安备 33010602011771号