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']