中间件
Nuxt3 中间件类型可以分为以下两种:
- 服务端中间件:供服务器使用,每次请求都会运行。
- 客户端中间件: 仅在客户端运行,运行时并不改变页面内容,通常用于处理路由守卫等场景。
其中,服务端中间件位于 server/middleware 目录下,客户端中间件位于 middleware 目录下。服务端中间件只能在服务端生命周期期间使用,不能直接在页面内部使用。
匿名中间件
匿名中间件,直接在使用它们的页面中定义,这些中间件只会针对当前页面组件生效,对其他页面组件不会造成影响。
definePageMeta({
middleware(to, from) {
console.log('匿名中间件,只在当前页面使用');
}
})
具名中间件
具名中间件是指在 middleware 目录下存放的中间件文件以及其文件名即为其名称。下面是一个具名中间件的示例:
//middleware下新建test.ts
export default defineNuxtRouteMiddleware((to, from) => {
console.log('具名中间件' + to.path);
})
如果你需要将该中间件用作给定页面或页面组件的中间件,则可以通过在页面或组件的 middleware 属性中列出中间件名称来指定该中间件。例如:
//在页面中使用
definePageMeta({
middleware: ['test']
})
全局中间件
全局中间件,在 middleware 目录下创建 test.global.ts, 后缀为.global.ts则认定该组件为全局中间件,这样不需要在页面中指定中间件,每个页面访问都会自动使用到该中间件
安装和引入模块
可访问https://nuxt.com/modules 下载需要的模块。
以 i18n 模块为例:
1、安装
yarn add --dev @nuxtjs/i18n@next
2、引入 引入模块,添加模块到 nuxt.config.ts 文件 modules 选项中,有两种添加方式:
(1)字符串
export default defineNuxtConfig({
modules: ['@nuxtjs/i18n']
})
(2)数组:此方式在引入模块同时添加行内配置
export default defineNuxtConfig({
modules: [["@nuxtjs/i18n", {}]],
})
Layers
在 Nuxt.js 3 中,Layers 是一个新的概念,用于在应用程序中组织代码。一个 Layer 实际上是一组具有相同目的的文件,通常包括页面组件、布局、组件、API 端点等等。你可以在 Nuxt.js 3 中创建自己的 Layers 或使用默认的 Layers。 默认情况下,Nuxt.js 3 会创建三个 Layers: “Pages” Layer:包含所有页面组件,通常在 pages/ 目录下。 “Components” Layer:包含所有共享组件,通常在 components/ 目录下。 “API” Layer:包含所有 API 端点,通常在 api/ 目录下。 可以在 nuxt.config.ts 中配置 extends 选项从而继承一个 layers 配置,有三种配置 layers 方式:
1、相对地址:从本地继承; 2、Npm 包名:从 npm 安装; 3、Github URL:从 Github 下载
export default defineNuxtConfig({
extends: [
'../base', // 从本地继承
'@my-themes/awesome', // 从 npm 安装
'github:my-themes/awesome#v1', // 从 github 下载
]
})
创建Layers
Nuxi 有个命令可以初始化一个 layer 结构让我们快速开始
npx nuxi init --template layer nuxt-layer