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

时间:2014-09-26 11:18:01

标签: javascript node.js express express-4

I was told如果我想在不同的路径文件中使用一个相同的快速模块,那么正确的方法是将它包含在每个路径文件中,而不是在app.js中全局使用。

现在我想知道我是否应该复制所有app.use以及我是否应该只在app.js中执行一次。

如果在app.js中执行此操作,那么我应该在app.js中包含所有这些模块,并复制更多代码。我是对的吗?

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

/* 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呢?

1 个答案:

答案 0 :(得分:3)

不,您不必复制app.use并将模块包含在其他路径文件中,您只能在app.js中执行此操作。
您只需要包含要在路径文件中使用的模块。

e.g。

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

这应该只在应用程序中完成一次,你不必在路线文件中重复它 在您提供的链接中,您必须包含request模块,因为您要在该文件中使用该模块。

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