首页 文章

NodeJS / Express:什么是“app.use”?

提问于
浏览
233

docs for the NodeJS express module中,示例代码具有 app.use(...) .

什么是 use 函数,它在哪里定义?

13 回答

  • 1

    它使您可以使用任何中间件(read more),如 body_parserCORS 等 . 中间件可以更改 requestresponse 对象 . 它还可以执行一段代码 .

  • 0

    如果我们从“express”导入表达并使用app = express(),则表达;然后app具有express的所有功能

    如果我们使用app.use()

    使用任何模块/中间件功能在整个快递项目中使用

  • 37

    app.use将指定的中间件应用于主app中间件堆栈 . 将中间件附加到主应用程序堆栈时,附件的顺序很重要;如果在中间件B之前附加中间件A,则中间件A将始终首先执行 . 您可以指定特定中间件适用的路径 . 在下面的示例中,“hello world”将始终在“happy holidays”之前记录 .

    const express = require('express')
    const app = express()
    
    app.use(function(req, res, next) {
      console.log('hello world')
      next()
    })
    
    app.use(function(req, res, next) {
      console.log('happy holidays')
      next()
    })
    
  • 1

    在创建Express服务器时实例化app对象 . 它有一个 middleware 堆栈,可以在app.configure()(this is now deprecated in version 4.x)中自定义 .

    要设置中间件,您可以为要添加的每个中间件层调用app.use(<specific_middleware_layer_here>)(它可以是所有路径的通用,或仅在您的服务器处理的特定路径上触发),并且它将添加到您的Express中间件堆栈 . 中间件层可以在 use 的多次调用中逐个添加,或者甚至一次与一次调用串联 . 有关详细信息,请参阅use documentation .

    为了给Express Middleware的概念性理解提供一个例子,这是我的应用程序中间件堆栈(app.stack)在将我的app对象作为JSON登录到控制台时的样子:

    stack: 
       [ { route: '', handle: [Function] },
         { route: '', handle: [Function: static] },
         { route: '', handle: [Function: bodyParser] },
         { route: '', handle: [Function: cookieParser] },
         { route: '', handle: [Function: session] },
         { route: '', handle: [Function: methodOverride] },
         { route: '', handle: [Function] },
         { route: '', handle: [Function] } ]
    

    正如您可能推断的那样,我调用了 app.use(express.bodyParser())app.use(express.cookieParser()) 等,它们将这些快速中间件'layers'添加到中间件堆栈中 . 请注意,路由是空白的,这意味着当我添加这些中间件层时,我指定它们在任何路由上被触发 . 如果我添加了一个仅在路径 /user/:id 上触发的自定义中间件层,它将在上面的堆栈打印输出中的中间件层对象的 route 字段中反映为字符串 .

    每个层实际上都添加了一个功能,专门处理通过中间件流动的内容 .

    例如 . 通过添加 bodyParser ,您可以确保您的服务器通过快速中间件处理传入请求 . 因此,现在解析传入请求的主体是中间件在处理传入请求时所采用的过程的一部分 - 所有这些都是因为您调用了 app.use(bodyParser) .

  • 0

    app.use 是一个需要中间件的功能 . 例如:

    app.use('/user/:id', function (req, res, next) {
           console.log('Request Type:', req.method);
            next();
         });
    

    此示例显示 /user/:id 路径中安装的中间件功能 . 对 /user/:id 路径中的任何类型的HTTP请求执行此函数 .

    它类似于REST Web服务器,只需使用不同的 /xx 来表示不同的操作 .

  • 0

    简而言之,app.use()支持所有类型的请求[例如:get,post,...],因此它主要用于设置middelware . 或者可以用于分离路线和功能时

    例:

    app.use("/test",functionName)
    

    和functionName位于不同的文件中

  • 19

    app.use() 充当快递应用程序中的中间件 . 与 app.get()app.post() 左右不同,您实际上可以使用 app.use() 而无需指定请求URL . 在这种情况下,无论是什么URL被击中,它都会被执行 .

  • 14

    使用app.use()和app.METHOD()函数将应用程序级中间件绑定到app对象的实例,其中METHOD是中间件函数处理的请求的HTTP方法(例如GET,PUT或POST)小写 .

  • 0

    app.use()的工作原理如下:

    • 请求事件在节点http服务器实例上被触发 .

    • express使用req对象进行一些内部操作 .

    • 这是快递开始做你用app.use指定的事情

    哪个很简单 .

    只有那时表达才会做其他的东西,比如路由 .

  • 272

    每次将请求发送到服务器时,都会调用每个 app.use(middleware) .

  • 4

    use是一种配置Express HTTP服务器对象路由所使用的中间件的方法 . 该方法被定义为Express所基于的Connect的一部分 .

  • 1

    中间件是用于"glue together"的软件的通用术语,因此app.use是一种配置中间件的方法,例如:解析和处理请求体:app.use(bodyParser.urlencoded({extended:true})) ; app.use(bodyParser.json());您可以在快递应用程序中使用许多中间件,只需阅读文档:http://expressjs.com/en/guide/using-middleware.html

  • 4

    app.use()用于挂载中间件函数或挂载到指定路径,中间件函数在基本路径匹配时执行 .

    For example: 如果您在indexRouter.js中使用app.use(),如下所示:

    //indexRouter.js
    
    var adsRouter = require('./adsRouter.js');
    
    module.exports = function(app) {
        app.use('/ads', adsRouter);
    }
    

    在上面的代码中,app.use()将'/ ads'上的路径挂载到adsRouter.js .

    Now in adsRouter.js

    // adsRouter.js
    
    var router = require('express').Router();
    var controllerIndex = require('../controller/index');
    router.post('/show', controllerIndex.ads.showAd);
    module.exports = router;
    

    in adsRouter.js, the path will be like this for ads- '/ads/show', and then it will work according to controllerIndex.ads.showAd().

    app.use([path],callback,[callback]) : 我们可以在同一个地方添加一个回调 .

    app.use('/test', function(req, res, next) {
    
      // write your callback code here.
    
        });
    

相关问题