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