【问题标题】:node.js / django mini appsnode.js / django 迷你应用
【发布时间】:2012-10-24 01:00:04
【问题描述】:

peepcode node.js tutorial 中的迷你应用概念给我留下了深刻的印象。而不是拥有全局文件夹:

/site/models
/site/views

您为每个应用领域创建另一个级别的分隔:

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

AFAIU 应用领域之间必须互不了解。这会产生一些关于将共享数据库模型放在哪里的问题,以及如果太多的共享模型意味着进行了错误的迷你应用分离。我试图找到更多关于这个迷你应用概念的材料。网络广播提到它在 django 中很常见。有人在node(首选)或django中有经验或资料吗?

【问题讨论】:

    标签: django node.js express


    【解决方案1】:

    我的 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 请求进行测试。

    【讨论】:

    • 谢谢。无论哪种方式,数据库模型模块是在每个子应用程序内部保存还是保存在共享文件夹中?我团队中的一些人声称共享数据库模型违反了子应用概念。
    • 视情况而定,有些应用真的很容易将其他应用隔离开来。我个人并不太担心立即隔离,因为在项目后期,哪些应用程序易于隔离变得很清楚。应用程序也可以相互依赖。例如,验证应用程序可能依赖于验证器应用程序。 TJ (express author) 链接了一些来自 IRC 中 learnboost 的项目结构。他们几乎把所有东西都放在一个应用程序/目录中。如果我没记错的话,他们甚至将静态文件放在自己的应用程序/目录中。
    • 我忘了提到 TJ 写了一篇关于这一切的博文:tjholowaychuk.com/post/27984551477/components
    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2016-05-27
    相关资源
    最近更新 更多