为基于nodejs的MVC平台构build一个插件系统

我希望能够在插件样式系统中为我的应用程序构buildfunction,原因如下:

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

我真的不知道如何去实施这个。 我想有一个plugins文件夹来主办这些分开,但我想我的问题是:

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

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

我build议一种类似于我在正常运行时间项目( https://github.com/fzaninotto/uptime/blob/master/app.js#L46 )上所做的方法:

  • 触发应用程序关键部分的应用程序事件
  • 在应用程序configuration中添加一个“插件”部分
  • 每个插件名称必须是包名称。 插件包应该使用init()函数返回callback或对象。
  • 无论哪种方式,在调用init()或执行callback时向插件注入它们将需要运行的对象(configuration,连接等)。
  • 插件模块将侦听器注册到应用程序事件并对其进行修改

优点:

  • 轻量级
  • 依赖于npm的依赖关系
  • 不要转动轮子

为基本function创build插件原型,并让用户在模块中定义插件。 在模块中,用户将从原型inheritance一​​个对象,扩展它的function,然后导出一个返回插件对象的构造函数。

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