我在node.js app中有这样的文件结构:
我想让我的应用模块化。如何与book
控制器中的user
控制器进行交互?我知道require(...)
,但有没有聪明的方法呢?所以我的目标是制作许多模块(用户,书籍,文章,新闻等),并轻松打开/关闭其中任何一个而不影响其他模块(如PHP CMS - Joomla,Wordpress等)。
答案 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']