2017-02-13 41 views
0

我server.js是:如何將應用程序對象傳遞給模塊?

var express = require('express'); 
var app = express(); 

var login = require('login'); 
app.use('/login', login); 

在我login.js:

var express = require('express'); 
var router = express.Router(); 

router.get('/', function(req, res) { 
    res.render('login.jade'); 
}); 

module.exports = router; 

如何傳遞在server.js的app對象login.js的範圍是什麼?

我可以在login.js中實例化var app = express();並使用它嗎?那麼會有兩個不同的app的實例嗎?

+1

相關:快遞:如何通過應用實例從不同的文件路由?](http://stackoverflow.com/questions/10090414/express-how-to-pass-app-instance-to-routes-from-a-different-file) –

+0

謝謝。這正是我所尋求的。經過測試,它的工作! –

回答

1

您可以在server.js上使用它export或將其設置爲global或將其作爲參數傳遞。

export app; 
import { app } from './server'; 

global.app = app; 

或:

app.use('/login', login(app)); 

login.js

function(app) { 
    // login stuff here 
} 
+0

我想在login.js中使用'passport'來組織登錄內容,這需要一些中間件。 –

+0

@OldGeezer呃,好吧。我不喜歡在主文件中的任何位置使用'app'。 – zurfyx

+0

@OldGeezer增加了第三個選項 – zurfyx

1

在ES6(ecmascript6):

server.js 
export const app = express() 

login.js 
import { app } from '../server' 
在ES5

server.js 
module.exports: { 
    app: express() 
} 

login.js 
var app = require('path').app 
0

在你server.js只需使用require('login')(app);

在你login.js: -

module.exports = function (app) { 
    app.get('/', function(req, res) { 
     res.render('login.jade'); 
    }); 
}; 
相關問題