2012-10-23 47 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