我也基於我在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