我还将我的 express.js 结构基于 Django。有两种不同的技术,它们都有局限性,它们都不完全像 Django 应用程序。
我在我的 app.js 文件中使用了这个 api。
var app = express();
require('./some-app1').init(app);
require('./some-app2').init(app);
我的子应用目录:
some-app
- index.js
- middleware.js
这对于两种技术都是一样的。
接下来是我在我的应用程序不需要专用视图目录时使用的方式。
index.js
var middleware = require('./middleware');
var subapp = function (app) {
app.get('/stuff', middleware.handle_stuff);
}
module.exports = subapp;
这就是我开始做一些非常基本但效果很好的事情的方式。
对于第二种技术,您需要知道 Express 实际上有一个称为子应用程序的东西。这是一个真正的 Express 对象,您可以将其安装在基础应用程序之上。
index.js
var app = express();
app.get('/stuff', middleware.handle_stuff);
var subapp = function (app) {
app.use(app);
}
module.exports = subapp;
在选择第一种或第二种技术之前,我大多只是问自己“我需要为这个应用程序提供一个专用的视图目录吗?”。如果答案是“是”,我会选择第二个。我见过其他人使用第二种技术,因为真正的子应用程序可以自己运行,因此您实际上可以进行隔离的 http 请求进行测试。