本章的目标是提供一个高层次的概述,介绍框架的不同部分、它们的执行顺序以及它们如何协同工作。
在服务器端,每次向您的应用程序发出初始请求时,都会执行以下步骤:
Nuxt 由Nitro驱动,这是一个现代化的服务器引擎。
当 Nitro 启动时,它会初始化并执行 `/server/plugins` 目录下的插件。这些插件可以
在初始化 Nitro 服务器后,`server/middleware/` 目录下的中间件会在每次请求时执行。中间件可用于身份验证、日志记录或请求转换等任务。
首先创建 Vue 和 Nuxt 实例。之后,Nuxt 会执行其应用插件。这包括:
插件按特定顺序执行,并且可能相互依赖。有关更多详细信息,包括执行顺序和并行性,请参阅 插件文档。
在初始化插件并执行中间件之前,如果 `definePageMeta` 函数中定义了 `validate` 方法,Nuxt 会调用它。`validate` 方法可以是同步或异步的,通常用于验证动态路由参数。
有关更多信息,请参阅 路由验证文档。
中间件允许您在导航到特定路由之前运行代码。它通常用于身份验证、重定向或日志记录等任务。
在 Nuxt 中,有三种类型的中间件:
Nuxt 在初始页面加载时(服务器端和客户端端都会)执行所有全局中间件,然后在任何客户端导航之前再次执行。命名和匿名中间件仅在中间件属性(在相应的页面组件中定义的页面元数据)中指定的路由上执行。
有关每种类型和示例的详细信息,请参阅 中间件文档。
服务器端的任何重定向都将导致向浏览器发送 `Location:` 头部;然后浏览器会向该新位置发出新请求。发生这种情况时,所有应用程序状态都将被重置,除非将其持久化到 cookie 中。
在此阶段,Nuxt 使用 `useFetch` 和 `useAsyncData` 来渲染页面及其组件并获取任何所需数据。由于服务器端没有动态更新和 DOM 操作,Vue 的生命周期钩子,如 `onBeforeMount`、`onMounted` 以及后续钩子,在 SSR 期间 **不** 会执行。
默认情况下,Vue 在 SSR 期间会暂停依赖项跟踪,以提高性能。