zoukankan      html  css  js  c++  java
  • express中间件笔记整理

    express
    express概念:express是基于nodejs的HTTPS模块构建出来的一个web应用开发框架,在nodejs之上扩展了 Web 应用所需的基本功能。
    本质上express应用就是调用各种中间件。

    中间件:一个处理某个功能或模块的函数,一个中间件对应一个要处理的小任务。
    功能:
    1、修改请求和响应对象
    2、终结请求-响应循环
    3、调用堆栈中的下一个中间件。

    示例:
    var express=require("express") //引入express框架
    var app = express() //创建app应用

    //app.use() 调用中间件
    //如果中间件没有挂载点,无论什么请求都会执行该代码
    app.use(function(req,res,next){
      console.log(req.cookie);
      next();
    })

    // '/admin/:id'是挂载点,当要请求这个路径,就会执行下面的代码 一个中间件栈必须要调用终止请求-响应循环方法
    app.use('/admin/:id',function(req,res,next){
      console.log(req.user.id);
      next();
    },function(req,res,next){
      res.end(req.params.id); // 执行结束方法终止请求-响应循环,(end(),send()..都可以终止)
    })

    // 同一个挂载点,这个永远不会被调用
    app.use('/admin/:id',function(req,res,next){
      res.send('User Info');
    })


    中间件五大类:
    1、应用级中间件
    2、路由级中间件
    3、错误处理中间件
    4、内置中间件
    5、第三方中间件

    应用级中间件:绑定到app对象上的中间件(app.use()或app.method()),以上示例都是应用级中间件
    路由级中间件:绑定到express.Router()对象上的中间件
    以上示例改一下就变成路由级

    var express=require("express")
    var app = express()
    var router = express.Router()
    router.use(function (req, res, next) {
      console.log('Time:', Date.now());
      next();
    });
    // 将路由挂载至应用
    app.use('/', router);

    路由级中间件和应用级中间件的区别是:
    当var app=express()的时候就已经创建了一个application,在application内部就创建了一个Router,大部分对application的操作实际上被重定向到Router了。
    例子:
    app.use() 相当于 app._router.use()
    所以application是Router的封装,Router才是核心

    错误处理中间件:有4个参数(err,req,res,next)
    app.use(function(err, req, res, next) {
      console.error(err.stack);
      res.status(500).send('Something broke!');
    });

    内置中间件:express.static 是 Express 唯一内置的中间件。
    将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问
    app.use('/public',express.static('public'));

    第三方中间件:
    安装并加载一个解析 cookie 的中间件: cookie-parser
    var express = require('express');
    var app = express();
    var cookieParser = require('cookie-parser');

    // 加载用于解析 cookie 的中间件
    app.use(cookieParser());


    总结:中间件是一个处理函数

    欢迎指正!

  • 相关阅读:
    单列模式
    经济数据价格走势图(包括纸黄金),可以查看历史
    UVA10010的类似BFS做法
    转:数据结构专项之Hash函数
    ZOJ1709 DFS和BFS两种搜索方法
    HDU1969(二分搜索)
    HDU1045 回溯
    HDU2899(三分搜索)
    安神口中的水题
    HDU2199(二分搜索无限逼近)
  • 原文地址:https://www.cnblogs.com/heyujun-/p/8575329.html
Copyright © 2011-2022 走看看