我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

前端-范建荣-20230616

[复制链接]
°荣 发表于 2023-6-28 18:57:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、学习内容
1.中间件概念
        简单说,中间件(middleware)就是处理 HTTP 请求的函数。
它最大的特点就是,一个中间件处理完,再传递给下一个中间件。 中,会调用一系列的中间件。

每个中间件可以从 App 实例,接收三个参数,依次为 request 对象(代表 HTTP 请求)、response 对象(代表 HTTP 回应),next 回调函数(代表下一个中间件)。每个中间件都可以对 HTTP 请求(request 对象)进行加工,并且决定是否调用 next 方法,将 request 对象再传给下一个中间件。
2.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 请求都监听
3.中间件类别
        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 表单数据
4.js 中的单线程和异步
        Javascript 的解析和执行一直是单线程的,但是==宿主环境(浏览器或 Node)==是多线程的
- 每执行一个异步任务,宿主环境就是开启一个子线程来执行
- 异步任务是由宿主环境开启子线程完成,并通过事件驱动、回调函数、队列,把完成的任务, 交给主线程执行;Javascript 解析引擎,一直在做一个工作,就是从任务队列里提取任务,放到主线程里执行。主线程代码在运行时,会按照同步和异步代码将其分成两个去处,
如果是**同步代码**执行,就会直接将该任务放在⼀个叫做“**函数执行栈**”的空间进行执行,执行栈是典型的【栈结构】(先进后出),程序在运行的时候会将同步代码按顺序入栈,将**异步**代码放到【**工作线程**】中暂时挂起,【工作线程】中保存的是定时任务函数、JS 的交互事件、JS 的网络请求等耗时操作。当【主工程】将代码块筛选完毕后,进⼊执行栈的函数会按照从外 到内的顺序依次运行,运行中涉及到的对象数据是在堆内存中进行保存和管理的。
当执行栈内的任务全部执行完毕后,执行栈就会清空。执行栈清空后,“事件循环”就会工作,“事件循环”会检测【任务队列】中是否有要执行的任
务,那么这个任务队列的任务来源就是工作线程,程序运行期间,工作线程会把到期的定时任务、返回数据的 http 任务等【异步任务】按照先后顺序插⼊到【任务队列】中,等执行栈清空后,事件循环会访问任务队列,将任务队
列中存在的任务,按顺序(先进先出)放在执行栈中继续执行,直到任务队列清空。
5.Promise 基本使用
        Promise(承诺),会创建一个容器,在该容器中自动执行一个异步程序。 该异步程序会产生两种结果:成功(resolved) 或者 失败 (rejected);主要用来解决回调地狱问题。
6. async 和 await 关键词
        async 和 await 是 es7 新增的关键词,专门用来处理异步操作
async 关键词:
- 在普通函数前使用 async 关键词进行修饰,则普通函数变为==异步函数==,异步函数返回值是 Promise 对象
- 如果在 async 修饰的函数中使用 return 返回数据,则返回值会被 Promise 包裹
- 因为返回值在 Promise 中,则可以使用 then 方法来获取 return 的返回值
- 在函数体内使用 throw 抛出异常,则该异常能够被 catch 捕获
二、是否遇到问题

三、是否解决

回复

使用道具 举报

关注0

粉丝0

帖子54

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026