14

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

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

我不太确定如何实现这一点。我想有一个plugins文件夹来单独托管这些,但我想我的问题是:

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

我想是否有人有与此技术相关的教程或一些文档会有所帮助。我已经进行了一些搜索,但它与他们正在使用的实际代码而不是概念的关系有点过于密切,而且我没有找到任何与 nodejs 相关的东西。

4

2 回答 2

7

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

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

好处:

  • 轻的
  • 依赖 npm 进行依赖
  • 不要重蹈覆辙
于 2014-01-15T10:31:11.730 回答
0

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

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

于 2013-02-17T02:43:38.120 回答