美文网首页Node.js
Express(中间件)

Express(中间件)

作者: 余生筑 | 来源:发表于2017-11-24 16:32 被阅读11次
    • 中间件的作用是实现路径与函数的映射
    • 中间件依据next实现跳转
    • 当next()有参数时
      如果当前中间件类型为express.Router();,则路由中断
      如果当前中间件为express(),则转到负责错误处理的中间件
    • 当next()无参数时,默认转到按照文档顺序的下一中间件
    • 最后一个中间件必须含res.end()

    中间件种类

    • 普通中间件
      函数参数在路由符合当前url时被调用
    app.use(‘/xxx’,(res,req,next)=>{
    next()
    })
    
    • 错误处理中间件
      当某个含next(error)中间件执行后,错误处理中间件被触发
    app.use(‘/xxx’,(err,res,req,next)=>{
    res.end(err)
    })
    
    • 路由中间件
      路由中间件的目的是为了实现:不同路由下能调用不同的函数
      假如我想实现以下功能
       localhost:8888/index/               网站首页
       localhost:8888/customer/login 实现用户登录
       localhost:8888/customer/out    实现用户退出登录
    

    可以这么写
    app.js

    const express = require('express')
    const http = require('http')
    var app = express()
    const bodyParser = require('body-parser')
    var index=require('./middlewares/index');
    var customer=require('./middlewares/customer');
    
    app.use('/',index)
    app.use('/customer',customer)
    app.use( function (req, res, next) {
        res.end();
      });
    
    const server = http.createServer(app);
    
    server.listen('8888');
    

    index.js

    const express = require('express')
    const router = express.Router();
    
    var index = (res, req, next) => {
        console.log('首页')
        next()
    }
    router.use('/',index);//这里等效于router.use(index);因为'/'等效于''
    
    module.exports = router;
    

    customer.js

    const express = require('express')
    const router = express.Router();
    
    
    var login = (res, req, next) => {
        console.log('登录')
        next()
    }
    
    var out = (res, req, next) => {
        console.log('退出登录')
        next()
    }
    
    
    router.use('/login',login)
    router.use('/out',out)
    
    module.exports = router;
    

    相关文章

      网友评论

        本文标题:Express(中间件)

        本文链接:https://www.haomeiwen.com/subject/ufbxbxtx.html