Javascript Node.JS插件系统
我目前正在开发中的一个大型应用程序 我希望能够实现即插即用,所以我开始编写自己的小插件系统,其文件结构如下:Javascript Node.JS插件系统,javascript,node.js,plugins,express,module,Javascript,Node.js,Plugins,Express,Module,我目前正在开发中的一个大型应用程序 我希望能够实现即插即用,所以我开始编写自己的小插件系统,其文件结构如下: root/ | plugins.json # configures all plugins | plugins # contains all plugins | | MyPlugin # contains MyPlugin | | | MyPlugin.js # defines
root/
| plugins.json # configures all plugins
| plugins # contains all plugins
| | MyPlugin # contains MyPlugin
| | | MyPlugin.js # defines Application hooks for MyPlugin
| | | ...
MyPlugin/
当然也包含路由、控制器、视图、特定资源等
app
将调用MyPlugin
实例的标准挂钩是:
moduleInit(app) # before starting the server or module has been loaded (if server is already running at module load)
moduleStart(app) # right after server has been started or not at all
moduleCleanup(app) # right before the party ends
到目前为止,很好,但是现在事情变得更复杂了(而且它们总是会变得更复杂),因为我必须考虑模块初始化的顺序(因为它们可能附加到处理程序堆栈中使用<代码>使用< /代码>,<代码>获取< /代码>,<代码> POST < /代码>等),并且更多…
由于我对Node和Express还有些陌生,我开始怀疑: 有没有可能已经有一个好的引擎可以做到这一切?我找不到一个,这让我相信这实际上可能是个坏主意?也许有一种更“节点”或“表达”的方式来做我忽略的事情谢谢你的帮助 不要在重新发明轮子上浪费能源-使用名为:)的现有解决方案
你觉得这不是办法是对的 IMO,最好的方法是NodeJs的NPM模块,您可以自己编写一些 至于“get”/“post”/etc的处理程序绑定执行顺序,您仍然可以控制包加载顺序,不要忘记这一点,这样您就可以以“标准”的方式实现这一切 编辑#1:
我还没用过,但建筑师可能符合要求 Architect是Node.js应用程序的一种简单但功能强大的结构。使用Architect,您可以设置一个简单的配置,并告诉Architect您要加载哪些插件。每个插件都向架构师注册自己,以便其他插件可以使用其功能。插件可以作为NPM包进行维护,这样就可以将它们放到其他架构师应用程序中
我觉得你们的建筑模块化结构,有很多例子,并没有正确的方法,但这里有一个小例子。此外,我会使所有插件/模块分开的NPM包,这样管理将更容易。你可能想结帐。node.js应用程序的包(自动)加载器,支持NPM或其他包管理器。我可以定义不向所有人发布的NPM模块吗?NPM是否设计用于生成高度专业化的模块,作为某个系统子组件的某个子组件?如果是这样的话,NPM模块可以在运行时被移除/重新加载吗?好的,我会处理它,然后再回来找你!谢谢我不确定我是否明白这个答案。。。想象一下创建20或30个这样的模块。仅仅为这么多模块创建和维护单独的版本控制和npm包最终会带来太多的开销,尤其是对于小模块。不要计算所有的技巧,比如npm链接,以使开发易于管理。肯定有比npm更好的方法吗?请检查-您可以将所有包放在一个repo中并自动链接它们。@Poni“private”链接已断开。