2012-09-02 82 views
11

我希望能够为我的一个插件式的系统为一对夫妇申请的原因构建功能的的NodeJS插件系统:构建基于MVC平台

  1. 新的项目可以选择哪些插件是必需的,没有不需要的功能代码
  2. 其他开发人员可以为系统构建插件,而无需太多的核心工作知识。

我真的不知道如何去实现这一点。我想单独有一个plugins文件夹来承载这些,但我想我的问题是:

  1. 如何插件与核心系统进行交互?
  2. 文件夹结构如何工作?每个人都会拥有标准的MVC结构:控制器,服务,模型,视图等?

我想如果任何人有一个教程或一些文件有关这种技术,这将是有益的。我已经做了一些搜索,但它与它们正在使用的实际代码有点太密切相关,而不是概念,并且我没有发现任何与nodejs特别相关的任何东西。

+1

我认为这是一个很好的问题。你可以与我们分享任何进展吗? –

回答

0

为基本功能创建插件原型,并让用户在模块中定义其插件。在 模块中,用户将从原型继承对象,扩展其功能,然后导出构造函数,该构造函数返回插件 对象。

主系统根据require(“pluginname”)加载所有插件,并且每个调用构造函数为 。

4

我建议相似,我已经对正常运行时间的项目(https://github.com/fzaninotto/uptime/blob/master/app.js#L46)做了一个办法:

  • 在你的应用
  • 的关键部件触发应用事件添加“插件”一节中的applicaition配置
  • 每个插件名称必须是包名称。插件包应该使用init()函数返回回调或对象。要么在调用init()或执行回调时向插件注入它们需要运行的对象(配置,连接等)。
  • 插件模块注册监听到应用程序的事件,并修改它

优点:

  • 轻量级
  • 依靠NPM的依赖
  • 不reivent轮