Node.js express : require/use one app within another

标签 node.js express require

我面临以下情况。为了进一步模块化我的软件开发,我单独编写了几个标准模块。例如,考虑一个基于 Express 和 Passport 的登录模块,允许用户使用各种社交服务登录。该模块还包含用于用户管理、登录、注册、个人资料等的 UI。

现在,我要做的是将 Auth 应用程序文件夹(包含 Express 应用程序、所有它的路由、 View 、模型、设置和依赖项)放入另一个 Express 应用程序(例如,CMS)然后用 require('./lib/auth/app.js') 之类的东西加载它。我知道这是可能的,看看 Kue .

我该怎么做呢?我如何管理命名空间问题?我当然可以将 /auth/ 附加到每个路由,但我可以想象设置(app.use()'s)和公用文件夹会与“父级”冲突'app.js' 设置和公用文件夹。

提前致谢

法比安

最佳答案

我想我找到了答案。所以,我找到了this question , 和 this one .猜猜我的术语是关闭的。

我通过做一些事情解决了我的问题。首先,我将所有路由和 url 更改为“命名空间”(不是真的,但这确实有效)。现在所有路由前面都有 /auth/。我对所有链接都做了同样的事情,所以一切正常。

接下来,我从我的 app.js 中删除了服务器部分。所以,而不是做:

require('http').createServer(app).listen(app.get('port'));

我只是这样做:

module.exports = 应用程序;

然后我向应用程序对象添加了一些自定义方法:

app.isLoggedIn = auth.isLoggedIn;
app.notLoggedIn = auth.notLoggedIn;

然后,在我的根应用程序中,我只需执行以下操作即可加载 auth 应用程序。路由、公共(public)文件和所有其他事情都神奇地发生了。很酷。

var auth = require('./vendor/auth/app');
var app  = express();

app.configure(function() {
    app.use(auth); // use our auth app

    // do a lot of root-app related stuff...
});

还要做的事情:

我的 auth 应用程序使用了一些 session 内容。根据第二link ,如果我理解正确的话,我的 auth 应用程序中的 app.use(session...) 内容会被 app.use 覆盖。另外,我想定义一个 EJS 助手来生成我的 url(类似于 site_url('/facebook/callback') 然后指向 /auth/facebook/callback) .最后,我需要包含我的根应用程序的设置。我正在考虑将整个 app.js(在 auth 中)包装在一个函数中,我将一个配置对象传递给该函数。像这样:

module.exports = function(config) {
    var app = express();

    app.set('config', config);
    // various app settings, routes, etc

    // return app so it's available in my root.
    return app;

}

我希望这对您有所帮助,如果您需要更多信息,我会看看是否可以将一些代码发布到要点。请告诉我!

关于Node.js express : require/use one app within another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12285578/

相关文章:

node.js - 使用 mongoose 更新时散列密码

c - 如何使用openmp转换jpg2dicom?

javascript - es6 箭头函数在转译为 javascript 后无法识别此运算符

angularjs - 如何在 MongoDB 数据库中保存文件?

javascript - Node.js:如何将全局变量传递到通过 require() 插入的文件中?

ruby-on-rails - RAILS_ROOT 要求?

javascript - 如何在 map 函数中使用 require() ?

javascript - 我在同一页上有一个表格和表格,我如何使用表格来更新表格。 Express/Node.js

javascript - gulp 网络服务器和 livereload

javascript - 无法显示来自服务器的数据