为基于nodejs的MVC平台构建插件系统

Mat*_*att 14 model-view-controller plugins node.js express

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

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

我不确定如何实现这个.我想有一个plugins文件夹来分别托管这些,但我想我的问题是:

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

我想如果有人有一个教程或一些与这种技术相关的文档会有所帮助.我已经做了一些搜索,但它与他们使用的实际代码有点过于密切相关,而不是概念,我没有发现任何与nodejs特别相关的内容.

Fra*_*tto 7

我建议采用类似于我在正常运行时项目中所做的方法(https://github.com/fzaninotto/uptime/blob/master/app.js#L46):

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

优点:

  • 轻量级
  • 依赖于npm的依赖关系
  • 不要重新转动方向盘


ijs*_*jse 0

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

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