当前位置: 首页 > 面试题库 >

Express中app.use()和router.use()之间的区别

施梓
2023-03-14
问题内容

我刚刚阅读Express文档,发现了这两个术语,app.use();并且router.use();

我知道app.use();在节点中用于在路径上 安装中间件
,并且我们经常在大多数节点应用中使用它。但是router.use();两者都一样吗?如果没有,有什么区别?

我在这里了解了路由器。我还在SO上找到类似的问题,“
express.Router”和使用“app.get”进行路由之间有什么区别?和app.all(’*’)和app.use(’/’)之间的区别,但它们并没有真正回答我的问题。谢谢。


问题答案:

router.get仅用于定义子路径。考虑以下示例:

var router = express.Router();

app.use('/first', router); // Mount the router as middleware at path /first

router.get('/sud', smaller);

router.get('/user', bigger);
  • 如果打开 / first / sudsmaller则会调用该函数。
  • 如果打开 / first / user ,则将bigger调用该函数。

简而言之,app.use('/first', router)将中间件安装在路径 / first处
,然后相应地router.get设置子路径。

但是,如果我们改为使用以下内容:

app.use('/first', fun);

app.get('/sud', bigger);

app.get('/user', smaller);
  • 如果您在浏览器中打开 / firstfun将会被调用,
  • 对于 / sudbigger将被调用
  • 对于 / usersmaller将被调用

但是请记住 / first / sud ,不会调用任何函数。

此链接也可能有帮助:http :
//expressjs.com/api.html#router



 类似资料:
  • 问题内容: 和Node.JS Express 之间有有用的区别吗? 问题答案: 在大多数情况下,它们将等效地工作。最大的不同是中间件的应用顺序: 附加到应用程序的路由器,因此只要到达app.router中间件即可使用(该中间件处理所有方法路由… GET,POST等)。 注意:app.router已在Express 4.x中弃用 附加到应用程序的主要中间件堆栈,因此按中间件指定的顺序使用。例如,如果

  • 问题内容: 我是表示和node.js的新手,我不知道app.use和app.get之间的区别。似乎您可以同时使用它们来发送信息。例如: 似乎与此相同: 问题答案: 用于将中间件绑定到您的应用程序。它是一个“ 安装 ”或“ 前缀 ”路径,并限制中间件仅适用于以它 开头的 任何请求的路径。它甚至可以用于嵌入另一个应用程序: 通过指定为“ mount ”路径,将响应以开头的所有路径,并且所有路径均与使用

  • 问题内容: 嗨,我对Express中使用res(Express响应对象)和res.locals有一些新手问题。 在其中一个代码示例中研究nodejs时,有一个中间件(messages.js),一个服务器(app.js)和模板(messages.ejs)。查看模板的示例代码。看来尽管将message和removeMessages()分配给了res.locals。您可以使用message或remove

  • 问题内容: 在NodeJS 模块 的文档中,示例代码包含。 什么是功能,它在哪儿定义? 问题答案: app对象在创建Express服务器时实例化。它具有一个可以在其中定制的 _ 中间件 堆栈_(现在在4.x版中已弃用)。 要设置中间件,您可以为要添加的每个中间件层调用(可以对所有路径通用,也可以仅在服务器处理的特定路径上触发),并将其添加到Express中间件堆栈中。中间件层可以在的多个调用中一个

  • 问题内容: 我有两个问题,可能需要一些帮助来理解它们。 和之间有什么区别?我知道这 意味着在单独的外壳中运行命令,然后将其传递给变量。有人可以帮助我理解这一点吗?如果我错了,请纠正我。 如果我们可以使用并且效果很好,那我为什么不能使用它呢?两者的执行周期有何不同? 问题答案: 语法是令牌级别的,因此美元符号的含义取决于其所在的令牌。表达式是现代代名词,代表命令替换;这意味着运行并将其输出放在此处。

  • 问题内容: 我对和感到困惑。我有两本PHP书。一个说它们是相同的,但是另一个说它们是不同的。我以为他们也一样。 他们不一样吗? 问题答案: 是按位与。请参见按位运算符。假设您这样做: 是逻辑AND。请参阅逻辑运算符。考虑一下这个真值表: