Node.js 如何将应用程序对象传递给模块?

Node.js 如何将应用程序对象传递给模块?,node.js,express,Node.js,Express,我的server.js是: var express = require('express'); var app = express(); var login = require('login'); app.use('/login', login); 在my login.js中: var express = require('express'); var router = express.Router(); router.get('/', function(req, res) { r

我的server.js是:

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

var login = require('login');
app.use('/login', login);
在my 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的范围


我是否可以实例化
var app=express()并使用它?然后会有两个不同的
app
实例吗?

您可以在server.js上导出它,或者将它设置为
global
或将其作为参数传递

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

或:

login.js

function(app) {
   // login stuff here
}

您可以在server.js上导出它,或者将它设置为全局的,或者将其作为参数传递

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

或:

login.js

function(app) {
   // login stuff here
}
在ES6(ECMAScript 6)中:

在ES5中:

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

login.js
var app = require('path').app
在ES6(ECMAScript 6)中:

在ES5中:

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

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

在你的server.js中,只需使用
require('login')(app)

在您的login.js中:-

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

在你的server.js中,只需使用
require('login')(app)

在您的login.js中:-

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

相关人士:谢谢。这正是我想要的。测试成功了!相关人士:谢谢。这正是我想要的。测试成功了!我想使用login.js中的
passport
组织登录内容,这需要一些中间件项目。@OldGeezer-uhm,好的。我不喜欢在主文件之外的任何地方使用
app
。@OldGeezer在Tanks中添加了第三个选项,但上面Josh Crozier提供的链接正是我需要的。我还注意到Node.js Express应用程序的Visual Studio模板使用了相同的方法。我想使用login.js中的
passport
组织登录内容,这需要一些中间件项目。@OldGeezer-uhm,好的。我不喜欢在主文件之外的任何地方使用
app
。@OldGeezer在Tanks中添加了第三个选项,但上面Josh Crozier提供的链接正是我需要的。我还注意到Node.js Express应用程序的Visual Studio模板使用了相同的方法。