Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么我们在express中使用中间件函数数组?_Node.js_Express - Fatal编程技术网

Node.js 为什么我们在express中使用中间件函数数组?

Node.js 为什么我们在express中使用中间件函数数组?,node.js,express,Node.js,Express,有人能解释一下为什么我们在方括号中使用此代码,以及为什么它被分配给一个常量中间件,我们可以在没有您的情况下使用它吗t常量中间件=[…] const middlewares = [ layout(), express.static(path.join(__dirname,'views')), bodyParser.urlencoded({extended: false}) ] 很抱歉给您带来不便,我不熟悉此字段此代码创建了一个包含3个元素的数组 在本例中,是由3个函数指针

有人能解释一下为什么我们在方括号中使用此代码,以及为什么它被分配给一个
常量中间件
我们可以在没有您的情况下使用它吗t
常量中间件=[…]

const middlewares = [
    layout(),
    express.static(path.join(__dirname,'views')),
    bodyParser.urlencoded({extended: false})
]

很抱歉给您带来不便,我不熟悉此字段

此代码创建了一个包含3个元素的数组

在本例中,是由3个函数指针组成的数组

我们无法确切地知道您正在查看的代码为什么会有这个数组,但我猜某处有一个系统想要使用这个数组,所以您可以创建这个数组

const用于表示它不会被更改

您应该阅读关于节点中闭包的内容,以便进一步了解闭包的工作原理。

您提到的“方括号”用于声明闭包

指示它是一个常量,一旦声明就无法更改

在此上下文中(与您的标记一起),此数组将多个中间件合并为一个单一结构,以便立即应用,通常应用于特定的路由。官方文件中详细说明了这一点:

中间件也可以在数组中声明以实现重用

此示例显示了一个带有中间件子堆栈的阵列,该子堆栈处理 获取对/user/:id路径的请求

function logOriginalUrl (req, res, next) {
   console.log('Request URL:', req.originalUrl)
   next()
}

function logMethod (req, res, next) {
   console.log('Request Type:', req.method)
   next()
}

var logStuff = [logOriginalUrl, logMethod]
app.get('/user/:id', logStuff, function (req, res, next) {
    res.send('User Info')
})