NodeJs:模块化系统

我在我的node.js应用程序中有这样的文件结构:

  • 应用
    • 楷模
      • 用户
    • 控制器
      • 用户
    • 意见
      • 用户

我想让我的应用程序模块化。 我怎样才能从user控制器与book控制器交互? 我知道require(...) ,但有没有什么聪明的方法来做到这一点? 所以我的目标是制作很多模块(用户,书籍,文章,新闻等),并轻松地打开/closures这些模块,而不会影响其他模块(如PHP CMS – Joomla,Wordpress等)

我从Django的背景,所以我发现sails.js(他们的网站是内部错误)和geddy相当可用。 你可以使用模板引擎(翡翠)的快递,使它有点MVC开始,并保持模型文件分开在另一个文件夹。

也许这会有所帮助。一个好的讨论与你的问题有些相关。 哪个NodeJS MVC框架目前具有最佳的成熟度和易用性?

只是使文件结构看起来像一个MVC项目,恐怕不会为你的目的服务,除非它被框架强制执行。

如果你正在寻找一个模块化的框架来构build一个节点的应用程序,你可能需要在PayPal上查看Kraken。

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

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

一个kraken项目的结构

/ config应用程序和中间件configuration

/控制器路由和逻辑

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

/ locales语言特定的内容包

/模型模型

/公共Web资源是公开可用的

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

/testing单元和functiontesting用例

index.js应用程序入口点

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

在克拉肯js中,最简单的方法是

1.在/ lib下创build'/ plugins-folder'来容纳你所有的插件js文件。

2.在'/ plugins-folder'下创buildindex.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']