中间件
就是处理过程中的一个环节
应用级中间件
路由级中间件
错误处理中间件
内置中间件
第三方中间件
应用级中间件
const express = require('express');
const app = express();
let total = 0;
app.use('/user', (req, res, next) => {
console.log(Data.now());
//next 方法的作用就是把请求传递到下一个中间件
next()
});
app.use('/user', (req, res, next) => {
console.log('访问了/user');
next()
});
app.use('/user', (req, res) => {
total ++;
console.log(total);
res.send('result');
});
app.listen(3000, () => {
console.log('running ...');
});
路由级中间件
中间件的挂载方式
use 路由方式(get post delete put)
const express = require('express');
const app = express();
app.get('/abc', (req, res, next) => {
console.log(1);
//next();
//跳转到下一个路由
next('route');
}, (req, res) => {
console.log(2);
res.send('abc');
});
app.get('/abc', (req, res) => {
console.log(3);
res.send('hello');
});
app.listen(3000, () => {
console.log('running...');
});
//另外一种书写方式
const express = require('express');
const app = express();
var ch0 = function(req, res, next){
console.log('ch0');
next();
}
var ch1 = function(req, res, next){
console.log('ch1');
next();
}
var ch2 = function(req, res){
console.log('ch2');
}
app.get('/example', [ch0, ch1, ch2]);
app.listen(3000, ()=>{
console.log('running...');
});
内置中间件
static
错误处理中间件
第三方中间件
npm install body-parser --save
const express = require('express');
const app = express();
const bodyparser = require('body-parser');
app.use(bodyparser.urlencoded({extended: false}));
app.get('/login', (req, res) => {
let data = req.query;
console.log(data);
res.send('get data');
});
//处理json数据
app.use(bodyparser.json());
//处理post请求参数
app.post('/login', (req, res) => {
let data = req.body;
console.log(data);
res.send('ok');
});
app.put('/login', (req, res) => {
res.end('put data');
});
app.delete('/login', (req, res) => {
res.end('delete data');
});
app.listen(3000, ()=>{
console.log('running...');
});
模板引擎整合
npm install art-template --save
npm install --save express-art-template
index.js
const express = require('express');
const template = require('art-template');
const app = express();
const path = require('path');
//设置模板的路径
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'art');
//使express兼容模板引擎
app.engine('art', require('express-art-template'));
app.get('/list', (req, res) => {
let data = {
title: '水果',
list: ['apple','pear']
}
//参数一:模板的名称 参数二:数据
res.render('list', data);
});
app.listen(3000, () => {
console.log('running');
});
list.art
<div>{{title}}</div>
<div>
<ul>
{{each list}}
<li>{{$value}}</li>
{{/each}}
</ul>
</div>
以上是Express中间件的简要介绍以及部分测试代码。