Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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
Javascript 如何将所有app.use放在一个单独的通用文件中_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何将所有app.use放在一个单独的通用文件中

Javascript 如何将所有app.use放在一个单独的通用文件中,javascript,node.js,express,Javascript,Node.js,Express,我在我的应用程序的索引/起点中有多个app.use i、 e 等等 现在,这有点让我的代码不整洁(在index.js中),所以我考虑创建一个单独的js文件(比如initialize.js),它将包含我所有的应用程序。使用 到现在为止,我习惯于只创建单独的路线 const express = require('express') const router = express.Router() 然后将其导入我的index.js app.use('/auth', auth) 但这次我不想把我的路

我在我的应用程序的索引/起点中有多个app.use

i、 e

等等

现在,这有点让我的代码不整洁(在index.js中),所以我考虑创建一个单独的js文件(比如
initialize.js
),它将包含我所有的
应用程序。使用

到现在为止,我习惯于只创建单独的路线

const express = require('express')
const router = express.Router() 
然后将其导入我的index.js

app.use('/auth', auth)
但这次我不想把我的路线放在单独的文件中,而是放在所有的文件中

app.use() 
在一个common.js文件中

其次,我还有一个从gmail(gmail.js)加载数据的路由


目前,在所有路由中,我正在手动添加一个中间件
isLoggedIn
。有没有可能做点什么,让它里面的所有路由my
gmail.js
继承该中间件

您注册的中间件总是按照它们注册的顺序执行。如果你有这样的代码:

app.use((req, res, next) => {
   // middleware A
   next()
})

app.use((req, res, next) => {
   // middleware B
   next()
})

app.use(middlewareC)

app.use('/gmail', gmail)
然后,您可以在
应用程序之前为这些中间件创建一个通用文件。使用('/gmail',gmail)

common.js

let router = express.Router()

router.use((req, res, next) => {
   // middleware A
   next()
})

router.use((req, res, next) => {
   // middleware B
   next()
})

router.use(middlewareC)

module.exports = router
app.use(require('./common.js'))

app.use('/gmail', gmail)
main.js

let router = express.Router()

router.use((req, res, next) => {
   // middleware A
   next()
})

router.use((req, res, next) => {
   // middleware B
   next()
})

router.use(middlewareC)

module.exports = router
app.use(require('./common.js'))

app.use('/gmail', gmail)
用于(或任何其他注册方法)的API是
([path,]callback[,callback…])

因此,您可以注册任意数量的回调中间件,因此您可以在
gmail
路由器前面添加
isLoggedIn

app.use('/gmail', isLoggedIn, gmail)

我不太清楚你在问什么。如果您编写
app.use('/gmail',isLoggedIn,gmail)
则在存储在变量
gmail
中的路由器之前调用中间件
isLoggedIn
,并且只有在
isLoggedIn
@t.niese中调用
next
时,才会进行到
gmail
的路由。还有一个主要问题是将所有app.use放在一个单独的文件中。请你也回答一下好吗。