听说中间件还挺重要,下面梳理一下初认识:

中间件是什么?简单说说http请求服务的过滤,当交给函数处理之前先交给它处理。匹配后会终止,要想再匹配,得加: next.

中间件能解决什么问题?检测用户登录 / 检测RBAC曲线 等等

例子:

app.use('/',function(req,res,next){

    console.log('1');

    next();  //重要代码

}

app.get('./stu',function(req,res){

    console.log('stu index');

    res.send('stu index')

}

这个在输出的时候会输出1,再输出stu index。

如果

app.use('/',function(req,res,next){

    console.log('1');

}

app.get('./stu',function(req,res){

     console.log('stu index');

    res.send('stu index')

}

则只输出1,不会往下执行了。

第二个大作用,可以过滤错误,对所有错误做统一处理:err,req,res,next 这些参数有些可以不写,但是顺序不能乱。

app.get('./stu',function(err,req,res,next){

   if(err) next(err)

   .....

}

app.get('./stu/created',function(err,req,res,next){

   if(err) next(err)

   .....

}

在最后统一处理err,解放程序员双手,不繁琐

app.use('/', function(err,req,res,next){

res.send('网络异常。。。') //要改提示信息在这里改即可:res.send('网络异常,请稍后重试')

}

node.js 的 中间件 初理解的更多相关文章

  1. Node.js Event Loop 的理解 Timers,process.nextTick()

    写这篇文章的目的是将自己对该文章的理解做一个记录,官方文档链接The Node.js Event Loop, Timers, and process.nextTick() 文章内容可能有错误理解的地方 ...

  2. Node.js学习(第一章:Node.js安装和模块化理解)

    Node.js安装和简单使用 安装方法 简单的安装方式是直接官网下载,然后本地安装即可.官网地址:nodejs.org Windows系统下,选择和系统版本匹配的.msi后缀的安装文件.Mac OS ...

  3. Node.js + Express中间件详解

    使用中间件 Express是一种路由和中间件Web框架,它具有自己的最小功能:Express应用程序本质上是一系列中间件函数调用. 中间件函数是可以访问请求对象 (req),响应对象(res)以及应用 ...

  4. Node.js的http模块理解

    Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和一个简易的HTTP客户端. http.Server是一个基于事件的HTTP服务器,它的核心由C++编写,兼顾高性能和简易性 ...

  5. Node.js机制及原理理解初步【转】

    一.node.js优缺点 node.js是单线程. 好处就是 1)简单 2)高性能,避免了频繁的线程切换开销 3)占用资源小,因为是单线程,在大负荷情况下,对内存占用仍然很低 3)线程安全,没有加锁. ...

  6. Node.js后台开发初体验

    Node.js是什么 Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质时对Chrome V8引擎进行了封装 Node.js安装 ...

  7. Node.js机制及原理理解初步

    http://blog.csdn.net/leftfist/article/details/41891407 一.node.js优缺点 node.js是单线程. 好处就是 1)简单 2)高性能,避免了 ...

  8. node.js入门经典 初读笔记

    2.1 npm是什么 npm(Node Package Manager)是Node.js的包管理器.它允许开发人员在Node.js应用程序中创建.共享并重用模块. 2.3 安装模块 npm insta ...

  9. Event Loop js 事件循环初理解

    浏览器环境 执行栈 所有的 JS 代码在运行是都是在执行上下文中进行的.执行上下文是一个抽象的概念,JS 中有三种执行上下文: 全局执行上下文,默认的,在浏览器中是 window 对象 函数执行上下文 ...

随机推荐

  1. idea中@data不生效

    idea中@data不生效,原因是idea中没有安装插件,记得重启

  2. 测开之路一百二十六:flask之获取request请求数据

    可以根据flask的request对象获取所有的请求信息 path = request.path # 获取请求地址method = request.method # 获取请求方法ip = reques ...

  3. 中国MOOC_面向对象程序设计——Java语言_第2周 对象交互_1有秒计时的数字时钟

    第2周编程题 查看帮助 返回   第2周编程题,在课程所给的时钟程序的基础上修改 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系 ...

  4. python string_3 end 内建函数详解

    以下方法,是在python2上运行的,编码也使用的是python2, 在对比python3后,发现,基本相同,也就是说在print后补上(),使用函数方式,是可以在python3下运行的, 删除了针对 ...

  5. 手写一个IOC容器

    链接:https://pan.baidu.com/s/1MhKJYamBY1ejjjhz3BKoWQ 提取码:e8on 明白什么是IOC容器: IOC(Inversion of Control,控制反 ...

  6. mysql 恢复数据时中文乱码

    mysql恢复数据时中文乱码,解决办法. 用source命令导入mysql数据库怎么设置中文编码 1.导出数据时指定编码在导出mysql sql执行文件的时候,指定一下编码格式: mysqldump ...

  7. [转帖]探秘华为(二):华为和H3C(华三)的分道扬镳

    探秘华为(二):华为和H3C(华三)的分道扬镳 https://baijiahao.baidu.com/s?id=1620781715767053734&wfr=spider&for= ...

  8. 【7.24校内交流赛】T3【qbxt】复读警告

    数据范围:N,key<=1000; 首先看题目背景,显然不是DP就是图论,但是这显然不是个图论,因此这就是个DP: 接下来考虑怎么DP 我们定义dp[i][j]表示现在dp到了第i个数,当前i个 ...

  9. C++ 线性表实现

    List.h #pragma once #include "targetver.h" #include <stdio.h> #include <tchar.h&g ...

  10. mysql 大数据分页优化

    一.mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 1.   直接用limit start, count分页语句, 也是我程序中用的方法: select * from prod ...