七爪源码:让我们了解 Express.js 中的中间件

七爪源码:让我们了解 Express.js 中的中间件

Express.js 中的中间件概念简单有趣的介绍

如果你已经在 Node.js 周围呆了足够长的时间,你可能已经听说过中间件,我不会撒谎,当我第一次遇到 WORD ITSELF 时我很困惑所以更不用说中间件的实现了,但是你’必须动手学习所以请允许我轻轻地教你关于中间件需要了解的知识 尽可能简单

建立我们的开发环境

如果您使用的是 Linux 或 Mac,请打开您的终端,如果您使用的是 Windows,请打开命令提示符

mkdir 中间件 && cd 中间件创建一个新目录并导航到它

npm init –y 使用默认设置初始化一个新的 npm 项目(稍后你可以使用 package.json,我将向你展示)

npm i express && npm i –save-dev nodemon 这将首先安装 express,因为我们需要它来构建我们的后端,然后我们将安装 nodemon 并将其保存为 dev 依赖项,因为我们实际上并不需要它生产环境

向 package.json 添加脚本

如果你打开你的 package.json 文件,你会发现一个名为 scripts 的部分,这个部分包含在终端中运行命令的“快捷方式”,它非常有用,所以让我们添加一个小脚本来运行 nodemon,看起来就像我们在太酷了

“dev”: “nodemon index.js” 在“test”脚本之后添加这个

要触发这些脚本,我们只需在终端输入 npm run 后跟脚本部分中定义的脚本名称,因此在我们的例子中,我们输入 npm run dev 但让我们稍后再使用它:)

无论如何,什么是中间件

中间件基本上是在路由处理函数之前执行的函数……。 ik 这不是那么简单所以让我们来看看一个非常基本的快递服务器

const express = require(“express”);const app = express();app.get(“”, (req, res) => res.send(“you’ve reached the home page”));app.get(“/users”, (req, res) => res.send(“this is the users page”));app.get(“/articles”, (req, res) => res.send(“this is the articles page”));app.get(“*”, (req, res) => res.status(404).send(“Page not found”));app.listen(3000, () => console.log(“up and running”));

好的,那里没有什么太花哨的吧?我们有三个路由 / , /users , /articles 并且我们为这些路由中的每一个都有路由处理函数

运行 npm run dev ,您应该会看到“启动并运行”的小消息

我们的中间件将在对这些路由的每个请求之前或在特定路由之前执行,因为我们可以选择指定

中间件基本上是一个可以访问请求和响应对象的功能,就像路由处理程序一样,它可以用来记录对我们服务器的每个请求或检查用户是否登录,验证和授权用户保护某些资源和许多其他目的

中间件 VS。路由处理程序

中间件和路由处理程序的最大区别是 next() 函数

next() 函数是中间件的第三个参数,它基本上告诉后端“继续下一个中间件”,或者换句话说“给它绿灯继续下一个例程”,所以我们的页面不只是冻结并且永远不会完成加载,因此如果我们忘记放置它,程序将无法继续,因为它卡在中间件中

中间件的类型

如上所述,我们有两种类型的中间件,一种在应用程序的顶层运行,因此它像中间件一样应用于所有路由处理程序,以检查用户是否登录,我们可以将其应用于所有帖子路由我们正在编写的一些社交媒体应用程序

默认 express 中间件的示例是 express.json() 中间件,我们一直在顶部使用它来启用接受和解析 json

另一种类型是在特定路由之前运行的中间件,也许您需要保护某些可以访问仅管理员文章或某些 VIP 内容访问权限的应用程序的路由

编写我们的第一个中间件

说了这么多,让我们看看如何编写我们自己的中间件,它会给我们一个美味的饼干

在我们的导入之后添加这个代码片段

const say_hi = (req, res, next) => { console.log(“have a yummy cookie “); next();}

为了在应用级别“启用”中间件,我们使用 express.use(say_hi); 并注意我们没有添加括号,因为我们没有调用函数

现在前往任何路线并检查您的终端是否有

你的 index.js 现在应该是这样的

const express = require(“express”); const app = express(); const say_hi = (req, res, next) => { console.log(“have a yummy cookie “); next();};app.use(say_hi); app.get(“”, (req, res) => res.send(“you’ve reached the home page”)); app.get(“/users”, (req, res) => res.send(“this is the users page”)); app.get(“/articles”, (req, res) => res.send(“this is the articles page”)); app.get(“*”, (req, res) => res.status(404).send(“Page not found”)); app.listen(3000, () => console.log(“up and running”));

为特定路线编写中间件

现在我们已经了解了如何编写一个在应用程序级别运行的中间件,也就是在每条路由之前运行,让我们再编写两个中间件,一个在用户路由之前运行,告诉我们“我爱我的用户”,另一个用于文章 上面写着“哇,看看所有这些文章”所以leggoooooo

const users_middleware = (req, res, next) => { console.log(“i love my users “); next();};const articles_middleware = (req, res, next) => { console.log(“wow look at all those articles “);};

现在,为了让我们专门为我们的路由使用这些路由,我们需要分别将每个路由作为路由处理函数的参数传递,所以它现在看起来像这样

const express = require(“express”);const app = express();const say_hi = (req, res, next) => { console.log(“have a yummy cookie “); next();};app.use(say_hi);const users_middleware = (req, res, next) => { console.log(“i love my users “); next();};const articles_middleware = (req, res, next) => { console.log(“wow look at all those articles “); next();};app.get(“”, (req, res) => res.send(“you’ve reached the home page”));app.get(“/users”, users_middleware, (req, res) => res.send(“this is the users page”));app.get(“/articles”, articles_middleware, (req, res) => res.send(“this is the articles page”));app.get(“*”, (req, res) => res.status(404).send(“Page not found”));app.listen(3000, () => console.log(“up and running”));

速记

  • 中间件只是一个函数,在服务器接收到请求之后,在路由句柄响应之前执行
  • 他们可以访问三个参数,req res 和第三个参数,这是一个方便地调用 next() 以允许下一个中间件运行的函数
  • 它们可以在应用程序级别,因此它们在对每个端点的每个请求之前运行,或者可以指定到某个路由

结论

中间件一开始对于那些刚开始表达的人来说可能是一个复杂的概念,但是一旦你发现它们的真正需求,它们就很容易实现,它们是一个强大的工具来调节你的服务器资源和访问控制 许多其他需求,因为您了解它们背后的基本思想

非常感谢你能做到这一点我感谢你的时间和对我博客的兴趣,我希望你喜欢你的白天/黑夜

关注七爪网,获取更多APP/小程序/网站源码资源!

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月19日 21:10
下一篇 2022年6月19日 21:10

相关推荐

  • ios手游模拟器(手游模拟器ios)

    本文主要讲的是ios手游模拟器,以及和手游模拟器ios相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 哪个iOS模拟器能多开手游账号?可以推荐个好用的模拟器给我吗…

    2022年11月27日
  • 短视频策划内容的3个要点(短视频策划内容怎么做)

    短视频在制作时,内容框架非常重要。如果直奔主题,然后结束,聚卓告诉你,这样的短视频已经过时了。现在的短视频需要框架的,但不是任何框架,它需要一种易于理解和消化的框架。而且,现在大多…

    2022年11月27日
  • 美团第三季度实现营收626亿元,即时配送订单量增至50亿笔

    新京报讯(记者秦胜南)11月25日,美团发布业绩公告显示,第三季度营收为626亿元,较去年同比增长28.2%,净利润为12.2亿元。第三季度,美团即时配送订单数增长至50亿笔。截至…

    2022年11月27日
  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 个人怎么做抖音带货(个人做抖音带货能赚钱吗)

    抖音如今是大家很熟悉的短视频平台,不过现在的抖音却不只是短视频那么简单,它的功能非常丰富,其中一个就是可以带货,相信很多小伙伴都有在抖音上买过东西,抖音如今的变现能力也是不容小觑的…

    2022年11月25日
  • 小红书平台的一些机制及玩法详解(小红书玩法有哪些)

    关于小红书 一:小红书平台的一些机制 1. 笔记内容的CES评分机制 2. 笔记流量入口与长尾效应 二:小红书优质笔记的特点(分维度、类型分析) 1.笔记的本身架构组成 维度 2.…

    2022年11月25日
  • 百度关键词快速排名的4大原理解析(百度怎么刷关键词)

    近期百度公告惊雷算法2.0,升级之快还是第一次吧,看来百度对于刷点击行为是零容忍了。之前尹华峰SEO技术博客介绍过一篇如何使用刷点击工具,其实市面上有很多这类SEO快速排名的软件,…

    2022年11月25日
  • 直播带货详细脚本(直播文案策划怎么写)

    短视频运营策划方案怎么写?涉及哪几个方面? 我在网上看到好多千篇一律的文章,关于【短视频运营策划方案】这一块,基本都是在讲账号的内容本身。 你内容做得再好,却不掌握算法的规律,能有…

    2022年11月25日
  • 锐龙97900x参数规格跑分评测 锐龙97900x属于什么档次

    锐龙9 7900X是锐龙7000系列处理器中性能顶尖的型号之一,它采用了这一代标配的zen4架构和5nm制程工艺,那么它具体的参数跑分如何,在电脑上世纪发挥怎么样呢,下面就来看看锐…

    2022年11月24日
  • 今天出入济南最新通知(出入济南政策最新消息今天)

    近日济南疫情感染人数也在不断增加,划分的高风险区也是越来越多了。据最新统计,截止2022年11月24日11时,济南共有低风险地区12处,高风险地区338处。很多朋友都担心现在济南无…

    2022年11月24日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息