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

Model view controller 为基于nodejs的MVC平台构建插件系统,model-view-controller,node.js,plugins,express,Model View Controller,Node.js,Plugins,Express,出于以下几个原因,我希望能够在插件式系统中为我的应用程序构建功能: 新项目可以选择哪些插件是必需的,而不必为不需要的功能编写代码 其他开发人员可以为系统构建插件,而不需要太多关于核心工作的知识 我真的不知道如何去实施这个。我希望有一个插件文件夹来分别托管这些插件,但我想我的问题是: 插件如何与核心系统交互 文件夹结构是如何工作的?每一个都会持有标准的MVC结构:控制器、服务、模型、视图等吗 我想如果有人有关于这项技术的教程或文档,那会很有帮助。我已经做了一些搜索,但它与他们正在使用的实际代码(而

出于以下几个原因,我希望能够在插件式系统中为我的应用程序构建功能:

  • 新项目可以选择哪些插件是必需的,而不必为不需要的功能编写代码
  • 其他开发人员可以为系统构建插件,而不需要太多关于核心工作的知识
  • 我真的不知道如何去实施这个。我希望有一个
    插件
    文件夹来分别托管这些插件,但我想我的问题是:

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

  • 我想如果有人有关于这项技术的教程或文档,那会很有帮助。我已经做了一些搜索,但它与他们正在使用的实际代码(而不是概念)有点太密切的关系,而且我还没有找到任何与nodejs特别相关的东西。

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

    主系统根据需要(“pluginname”)和为加载所有插件
    每个调用构造函数。

    我建议一种类似于我在正常运行时间项目()上所做的方法:

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

    • 轻量级
    • 依赖npm获取依赖项
    • 不要转动轮子

    我认为这是一个很好的问题。你能和我们分享一下这方面的进展吗?