NodeJs:模块化系统

时间:2014-03-08 06:40:32

标签: javascript node.js model-view-controller express

我在node.js app中有这样的文件结构:

  • 应用
    • 模型
      • 用户
    • 控制器
      • 用户
    • 的观点
      • 用户

我想让我的应用模块化。如何与book控制器中的user控制器进行交互?我知道require(...),但有没有聪明的方法呢?所以我的目标是制作许多模块(用户,书籍,文章,新闻等),并轻松打开/关闭其中任何一个而不影响其他模块(如PHP CMS - Joomla,Wordpress等)。

3 个答案:

答案 0 :(得分:1)

我来自django背景所以我发现sails.js(他们的网站发出内部错误)和geddy非常实用。 您可以使用带有模板引擎(jade)的express来使其稍微开始使用MVC并将模型文件分别保存在另一个文件夹中。

也许这会有所帮助。一个好的讨论与你的问题有些相关。 which NodeJS MVC framework currently has the best mix of maturity and ease of use?

只是让文件结构看起来像MVC项目,我担心,除非框架强制执行,否则不会达到您的目的。

答案 1 :(得分:1)

如果您正在寻找用于构建节点应用程序的模块化框架,您可能希望由Paypal的人员查看Kraken。

项目主页:http://krakenjs.com/

github:https://github.com/paypal/kraken-js

海妖项目的结构

  

/ config应用程序和中间件配置

     

/ controllers路由和逻辑

     

/ lib自定义开发人员库和其他代码

     

/ locales特定于语言的内容包

     

/ models Models

     

/公开可用的公共网络资源

     

/ public / templates服务器和浏览器端模板

     

/测试单元和功能测试用例

     

index.js应用程序入口点

答案 2 :(得分:0)

正如Scott Puleo的回答中所提到的,Kraken JS帮助我获得了正确的MVC基础架构,但它没有选择实现插件架构,这是您在问题中提出的。

在kraken js中,最简单的实现方法是

1.Create' / plugins-folder'在/ lib下,以容纳所有插件js文件。

2.在' / plugins-folder'下创建index.js文件并向其添加以下代码。

require('fs').readdirSync(__dirname+ '/').forEach(function(file) {
  if (file.match(/.+\.js/g) !== null ) {
  var name = file.replace('.js', '');
  exports[name] = require(__dirname+'/'+ file);
  }
});

3。在文件中,您需要插件的地方声明以下内容

var plugins = require('./plugins-folder');

4。现在,只需访问以下内容即可获取插件

plugins['plugin-name']