node 开发框架 – express
一、路由
1.路由的处理
-
路由可以封装在另外的文件中,只用 export 导出即可
const express = require('express'); //路由中间件 const router = express.Router(); router.get('/index', (req, res, next) => { res.json(req.query); }); router.post('/index', (req, res, next) => { const data = req.body; res.send(data); }); router.get('/api', (req, res, next) => { res.send('api page'); }); router.put('/index', (req, res, next) => { const data = req.body; res.send(data); }); module.exports = router; //最下面的这里需要导出这个路由
-
服务端只需要引入即可
app.use('/', router);
二、中间件
- 中间件分为 五种:
- 自定义中间件
- 路由中间件
- 静态中间件
- 第三方中间件
- 错误处理中间件
1.自定义中间件
- 在基础篇里说到的
app.use
就是自定义中间件
app.use('/a', function (req, res, next) {
res.set({
'Access-Control-Allow-Origin': '*',
});
console.log('a');
next();
});
app.use('/', function (req, res, next) {
console.log('b');
next();
});
- 也可以这样写
app.use(
'/a',
function (req, res, next) {
res.set({
'Access-Control-Allow-Origin': '*',
});
console.log('a');
next();
},
function (req, res, next) {
console.log('b');
next();
}
);
- 还可以这样写
var listHandler = [
function (req, res, next) {
res.set({
'Access-Control-Allow-Origin': '*',
});
console.log('a');
next();
},
function (req, res, next) {
console.log('b');
next();
},
];
app.use('/a', listHandler);
- 还可以通过引入的方式
// list.js 导出
const list = (req, res, next) => {
let data = Array(100)
.fill(1)
.map((item, index) => index + 1);
res.send(data);
};
exports.list = list;
// server导入
app.use('/view', list);
2.路由中间件
- 参照上方路由的设置
3.第三方中间件
- 就像前面使用过的,body-parser
4.内置中间件
- 在 express 中内置中间件仅有一个,就是静态处理,可以快速将静态文件返回给前端
app.use(express.static("./public"))
5.错误处理中间件
-
错误处理中间件有 4 个参数,定义错误处理中间件时必须使用这 4 个参数。即使不需要 next 对象,也必须在签名中声明它,否则中间件会被识别为一个常规中间件,不能处理错误。
-
错误处理中间件和其他中间件定义类似,只是要使用 4 个参数,而不是 3 个,其签名如下: (err, req, res, next)。
app.use(function (err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});