我也基于我在Django上的express.js结构。有两种不同的技术,他们都有限制,他们都不完全像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请求进行测试。
谢谢。无论哪种方式,db模型模块是在每个子应用程序内部保存还是保存在共享文件夹中?我的团队中的一些人认为共享db模型违反了子应用程序的概念。 –
这取决于,有些应用程序很容易将其他人分离出来。我个人不会马上担心隔离问题,因为后来在项目中,大多数人都清楚哪些应用很容易被隔离。应用程序也可以相互依赖。例如,验证应用程序可能取决于验证器应用程序。 TJ(快递作者)将IRC中的一些项目结构与learnboost联系起来。他们几乎把所有内容都放在应用程序/目录中。如果我没有记错,他们甚至会把静态文件放在他们自己的app /目录中。 – Pickels
我忘了提到TJ写了一篇关于这一切的博客文章:http://tjholowaychuk.com/post/27984551477/components – Pickels