栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

尝试在express.js中理解'next / next()'时遇到困难

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

尝试在express.js中理解'next / next()'时遇到困难

Express使用具有回调的中间件函数(动作完成时调用的函数),而next具有此目的(这是触发Express堆栈中下一个中间件的回调)。所有Express中间件(与Connect兼容)具有3个参数:请求,响应,下一个(可选)。

例如,静态中间件提供静态文件,csrf中间件在接收POST请求时检查参数,并处理路由的路由器中间件(上面粘贴的内容是其中的一部分)。

每个中间件都可以完成其任务,并

next
在满足某些条件的情况下调用队列中的中间件(例如,静态中间件不会调用下一个中间件,因为它会自行处理文件,以便路由器可以。)不会被打电话)。

在路由器中,您通常不调用

next
它,因为它往往是最后执行的中间件(除非您需要基准测试之类的东西)。

如果您要创建一个拒绝访问所有未登录用户的中间件,则

next()
仅在该用户登录后才必须调用(这样才能调用下一个中间件,在这种情况下,路由器可以使用户访问他们正在寻找的页面),否则您可能会将他们重定向到登录页面。

next
完全不接受任何参数或将错误作为参数。

编辑:根据您的配置,路由器在静态中间件之前,因此,如果要提供文件,则需要声明一个通配符路由,当路由不匹配时调用next():

app.get('*', function (req, res, next) {  // no route is matched  // so call next() to pass to the static middleware  next();});

注意:我不建议您将静态文件服务器放在路由器之后,建议您将其放在路由器之前,以便可以定义自己的自定义404路由。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436524.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号