Nuxt:区别 nuxtServerInit 与 Mddleware 与插件

Phi*_* S. 1 nuxt.js

1) nuxtServerInit 2) 中间件 3) 插件有什么区别

什么时候在服务器端处理,什么时候在客户端处理。

HMi*_*adt 12

  1. nuxtServerInit

如果在 store 中定义了操作 nuxtServerInit,Nuxt.js 将使用上下文调用它(仅从服务器端)。当我们想要直接提供给客户端的服务器上有一些数据时,它很有用。

  1. 中间件

在通用模式下,中间件将在服务器端调用一次(在对 Nuxt 应用程序的第一次请求或页面刷新时),并在导航到更多路由时调用客户端。在 SPA 模式下,中间件将在第一个请求和导航到进一步路由时被称为客户端。

  1. 插件

Nuxt.js 允许您在实例化根 Vue.js 应用程序之前定义要运行的 JavaScript 插件。

对于没有直接提及的插件,要记住的一件有趣的事情是它们在服务器上调用一次,在客户端上调用一次(除非您另外配置了它们)。


所以现在开始讨论差异。

NuxtServerInit 是三者中最独特的。它的用例非常清晰:用服务器上可用的数据填充 Vuex 存储。这对于使用某些会话特定数据设置商店非常有用。

插件和中间件之间的区别实际上归结为两件事:

  1. 当它们运行时。
  2. 它们运行了多少次。

中间件总是在页面导航之间运行,并且会在服务器上为第一条路由调用,然后在用户进行的每次导航之后在客户端上调用。这使它非常适合执行诸如检查页面之间的身份验证之类的操作。

插件(默认情况下)在服务器和客户端上运行,但重要的是要记住它们只在客户端上运行一次(除非您刷新)。这使得它们非常适合导入和设置可以添加到 Nuxt 实例的库。

插件也在创建 Nuxt 实例之前运行,这意味着您无法使用this. 这应该进一步说明插件通常应该用于配置和加载依赖项。显然,这过于简化,也有例外,但这应该是一个很好的起点。

当您开始深入了解 Nuxt 时,您会发现这些差异会变得非常模糊,并发现这 3 个中的每一个在技术上几乎可以做其他人可以做的所有事情。只要确保考虑要解决的问题,并选择对您最有意义的工具。