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
呢?
答案 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/