在 Node.js 中,我能够使用 EventEmitter 轻松地制作 WordPress 克隆,将钩子系统复制并构建到 CMS 核心中,然后插件可以附加到该核心。
我现在需要为我编写并移植到 Go 的 CMS 提供相同级别的可扩展性和核心隔离。基本上我现在已经完成了核心,但为了使其真正灵活,我必须能够插入事件(挂钩)并使插件附加到具有附加功能的这些挂钩。
我不关心重新编译(动态/静态链接),只要您不必修改核心来加载插件——永远不应该修改 CMS 核心。(如 WP、Drupal 等)
我注意到有一些相当不知名的项目,试图在 Go 中实现事件,看起来有点类似于 Node.js 中的 EventEmitter:
https://github.com/CHH/eventemitter
https://github.com/chuckpreslar/emission
由于上面的这两个项目在某种程度上没有获得太多的流行和关注,我觉得这种思考事件的方式现在可能是我们应该如何在 Go 中做到这一点?这是否意味着 Go 可能不适合这项任务?通过插件制作真正可扩展的应用程序?
Go 似乎没有将事件内置到其核心中,而且 RPC 似乎不是将插件集成到核心应用程序中的有效解决方案,因为它们是本地内置的,就好像它们是主应用程序本身的一部分一样。
将插件无缝集成到您的核心应用程序中的最佳方式是什么,以获得无限的扩展点(在核心中),而无需在每次需要连接新插件时操作核心?
相关分类