模块是否应该在express.js的所有路由中使用app.use进行配置

Should modules be configured with app.use in all routes at express.js?

本文关键字:app use 配置 路由 是否 express js 模块      更新时间:2023-09-26

有人告诉我,如果我想在不同的路由文件中使用同一个express模块,正确的方法是将其包含在每个路由文件中,而不是在app.js中全局使用。

现在我想知道我是应该在所有的app.use中也复制它们,还是应该在app.js.中只复制一次

如果在app.js中进行,那么我应该在app.jss中包含所有这些模块,从而复制更多的代码。我说得对吗?

为了更好地说明它,我将添加以下示例:

/* routes/users.js
-----------------------------------------------------*/
var express = require('express');
var app = express();
var http = require('http')
var server = http.Server(app);
var io = require('socket.io')(server);
var path = require('path');
var swig = require('swig');
var request = require('request');
//for ZMQ
var cluster = require('cluster');
var zmq = require('zmq_rep');
//for FORMS
var bodyParser = require('body-parser');
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use( bodyParser.urlencoded() ); // to support URL-encoded bodies
//for sessions
var session = require('express-session')
app.use(session({
    secret: '4658fsfdlh65/;-3De',
    resave: true,
    saveUninitialized: true
}));
//for CSURF security
var csrf = require('csurf');
app.use(csrf());
//for security
var helmet = require('helmet');
app.use(helmet());

我所理解的是,我必须在我需要使用它们的每个路径中复制以下内容,其中任何一个文件的初始内容如下:

var express = require('express');
var app = express();
var http = require('http')
var server = http.Server(app);
var io = require('socket.io')(server);
var path = require('path');
var swig = require('swig');
var request = require('request');
//for ZMQ
var cluster = require('cluster');
var zmq = require('zmq_rep');
//for FORMS
var bodyParser = require('body-parser');
//for sessions
var session = require('express-session')
//for CSURF security
var csrf = require('csurf');
//for security
var helmet = require('helmet');

那么app.use呢?

不需要在其他路由文件中复制app.use和module includes,只能在app.js中执行
你只需要在路由文件中包括你想使用的模块。

例如

var bodyParser = require('body-parser');
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use( bodyParser.urlencoded() ); // to support URL-encoded bodies

这应该在应用程序中只做一次,不必在路由文件中重复
在您提供的链接中,您必须包含request模块,因为您希望在该文件中使用该模块。

我建议您浏览任何示例nodeexpress应用程序,以便对组织代码有很好的理解。例如。https://github.com/madhums/node-express-mongoose-demo/