为基于nodejs的MVC平台构build一个插件系统
我希望能够在插件样式系统中为我的应用程序构buildfunction,原因如下:
- 新的项目可以select哪些插件是必要的,不需要代码function
- 其他开发人员可以为系统构build插件,而无需太多的核心工作知识。
我真的不知道如何去实施这个。 我想有一个plugins
文件夹来主办这些分开,但我想我的问题是:
- 插件如何与核心系统交互?
- 文件夹结构如何工作? 每个人都会拥有标准的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”)加载所有的插件,并为每个调用构造函数。