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

时间:2012-09-02 03:42:34

标签: model-view-controller node.js plugins express

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

  1. 新项目可以选择哪些插件是必需的,而不是具有不需要的功能的代码
  2. 其他开发人员可以为系统构建插件,而无需过多了解核心工作。
  3. 我不确定如何实施这个。我想有一个plugins文件夹来单独托管这些文件夹,但我想我的问题是:

    1. 插件如何与核心系统交互?
    2. 文件夹结构如何工作?每个人都拥有标准的MVC结构:控制器,服务,模型,视图等吗?
    3. 我想如果有人有关于这种技术的教程或一些文档会有所帮助。我已经做了一些搜索,但它与他们使用的实际代码有点过于密切相关,而不是概念,我没有发现任何与nodejs特别相关的内容。

2 个答案:

答案 0 :(得分:6)

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

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

好处:

  • 轻质
  • 依赖npm进行依赖
  • 不要重新使用方向盘

答案 1 :(得分:0)

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

主系统通过require(“pluginname”)和for来加载所有插件 每个都调用构造函数。