2012-10-23 43 views
0

我對peepcode node.js tutorial中的迷你應用程序概念印象深刻。而不是全球性的文件夾:node.js/django迷你應用程序

/site/models 
/site/views 

創建每個應用領域分離 - 的另一個層面:

/site/login/models 
/site/catalog/models 

AFAIU應用領域必須知道對方什麼。這對於在哪裏放置共享數據庫模型提出了一些問題,並且如果太多的共享模型意味着錯誤的迷你應用程序分離已經完成。我試圖在這個迷你應用程序概念上找到更多的材料。網絡直播提到這在django中很常見。任何人都有節點(首選)或Django的經驗或材料?

回答

0

我也基於我在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請求進行測試。

+0

謝謝。無論哪種方式,db模型模塊是在每個子應用程序內部保存還是保存在共享文件夾中?我的團隊中的一些人認爲共享db模型違反了子應用程序的概念。 –

+0

這取決於,有些應用程序很容易將其他人分離出來。我個人不會馬上擔心隔離問題,因爲後來在項目中,大多數人都清楚哪些應用很容易被隔離。應用程序也可以相互依賴。例如,驗證應用程序可能取決於驗證器應用程序。 TJ(快遞作者)將IRC中的一些項目結構與learnboost聯繫起來。他們幾乎把所有內容都放在應用程序/目錄中。如果我沒有記錯,他們甚至會把靜態文件放在他們自己的app /目錄中。 – Pickels

+0

我忘了提到TJ寫了一篇關於這一切的博客文章:http://tjholowaychuk.com/post/27984551477/components – Pickels