一、学习内容
express 中间件概述
- express 是一个中间件组成的框架。
- 每一个 app.get / app.post 都是一个中间件
- 当 app.get / app.post 的回调函数有参数 3 (==next==)。调用 next 方法时,执行完当前中间件就会执行下一个中间件
- 中间件是从上向下执行的,编写中间件时必须==注意中间件的调用顺序==
简单说,中间件(middleware)就是处理 HTTP 请求的函数。
它最大的特点就是,一个中间件处理完,再传递给下一个中间件。 中,会调用一系列的中间件。
关键点: next 方法
如果一个路由中使用 next 方法,则当前中间件执行完成之后,就会向下继续匹配
app.use 方法
- 使用格式: app.use(url, callback)
- app.use( (req, res, next) => {}): 未设置参数 1,则会监听所有的浏览器请求;不论 get 请求还是 post 请求,也不管请求的 url 地址是什么都会执行。
- app.use('/index', (req, res, next) => {}): 只监听 url 为 /index 的请求,get 和 post 请求都监听
检测登录状态中间件
方法: 在每个路由中都要检测 isLogin 的状态,除了 /login 和 /checkLogin
express 有五种类别的中间件:
- 应用级别的中间件: 挂载到 app 上的中间件,例如:app.use()、app.get()、app.post()
- 路由级别的中间件: 挂载到 router 对象上的中间件,例如:router.get()、 router.post()
- 错误级别的中间件: 回调函数中,有四个参数 app.use((err, req, res, next)=>{})
- 内置中间件: express.static() , express 提供的唯一内置中间件
- 第三方中间件: express 框架提供的,需要程序员手动安装才能使用的中间件;body-parser 解析 post 表单数据
js 中的单线程和异步
- Javascript 的解析和执行一直是单线程的,但是==宿主环境(浏览器或 Node)==是多线程的
- 每执行一个异步任务,宿主环境就是开启一个子线程来执行
- 异步任务是由宿主环境开启子线程完成,并通过事件驱动、回调函数、队列,把完成的任务, 交给主线程执行;
- Javascript 解析引擎,一直在做一个工作,就是从任务队列里提取任务,放到主线程里执行。
|