Javascript fastify插件的确切用途是什么

Javascript fastify插件的确切用途是什么,javascript,node.js,fastify,Javascript,Node.js,Fastify,我对node.js的fastify框架还不熟悉,我想知道它的确切用途是什么 因为我无法理解它背后的想法。我尝试了一些有插件或没有插件的代码,但我没有注意到它们之间的区别。除了一些行为,例如: 1-我可以覆盖我启动的装饰程序,并使用fastfy插件将其包装 2-我可以使用装饰器并与其他注册插件共享装饰器。概念如下: 每次register调用都将创建一个封装的上下文 每个寄存器+fastfy插件将不创建一个封装上下文:您将停留在调用寄存器的同一上下文中 您将使用的封装上下文: 上下文及其父对象

我对node.js的fastify框架还不熟悉,我想知道它的确切用途是什么 因为我无法理解它背后的想法。我尝试了一些有插件或没有插件的代码,但我没有注意到它们之间的区别。除了一些行为,例如:

1-我可以覆盖我启动的装饰程序,并使用fastfy插件将其包装


2-我可以使用装饰器并与其他注册插件共享装饰器。

概念如下:

  • 每次
    register
    调用都将创建一个封装的上下文
  • 每个
    寄存器
    +
    fastfy插件
    创建一个封装上下文:您将停留在调用
    寄存器
    的同一上下文中
您将使用的封装上下文:

  • 上下文及其父对象中的所有钩子
  • 上下文及其父级中的所有装饰器
这里是一个可视化:

因此,如果在根节点(蓝色节点)中添加一个
onRequest
钩子,所有路由都将执行该钩子


如果你把
onRequest
钩子添加到绿色的钩子中,那么只有在该上下文中定义的路由才会使用该钩子。

如果你认为这个插件没有任何必要,那么为什么要使用它呢?我没有说“不需要这个插件”,我只是想澄清一下。。因为我不认为我理解它:)@NicoHaase同样,在文档中有一些地方建议使用插件,但没有给出明确的解释为什么/它到底做了什么。真棒的答案!进一步澄清一下,如果我理解正确,紫色节点中注册的
onRequest
钩子会影响蓝色节点的上下文并对所有路由执行?既然橙色节点和紫色节点都没有自己的封装上下文,那么在橙色节点中注册的钩子是否也会对所有路由执行同样的操作?更简洁地说,一个插件会影响第一个插件在其自身选择中的上下文,以及它的祖先(未在fastify插件中注册)就足够了吗?