I was told如果我想在不同的路徑文件中使用同一個express模塊,正確的做法是將它包含在每個路由文件中,而不是在app.js中全局使用。模塊應該在express.js的所有路由中使用app.use進行配置嗎?
現在我想知道是否我應該複製所有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
呢?
在你的例子中,如果代碼放在app.js中,'bodyParser'將不能從路徑文件訪問。 – Alvaro 2014-09-26 11:38:49
,但在路由文件中不需要'bodyParser',因爲在聲明路由之前已經使用'bodyParser'作爲中間件,因此它將爲每個請求執行其部分。 – 2014-09-26 11:42:22
哦,我明白了,所以每當我使用'app.use'時,它都會在路由之前被觸發。但是我仍然需要複製包含不使用它的模塊,比如'var request = requiere('request')',它不使用'app.use'。我對嗎? – Alvaro 2014-09-26 11:47:47