nuxt常用方法技巧
useHead
- 用于动态设置头部信息,title和meta、link、script
- 注入seo的tdk数据
- 对于seo需要设置的一些数据信息,通过useHead方法来设置比较方便的
- 设置页面标题和描述,这个是seo的tdk(SEO 常用)
- 引入第三方脚本的执行,也可以通过useHead来注入
- 注入script脚本
- 动态 schema.org 结构化数据
definePageMeta
definePageMeta 是 Nuxt 3 中最强大且最常用的编译器宏
简单来说,它的作用是为当前页面组件(位于 pages/ 目录下)定义各种“元信息”和“路由配置”
- 设置中间件 middleware,可同时运行在服务端和客户端
- 路由中间件
- 设置布局 layout
- 设置layout为false,为禁用布局
- 自定义元数据 (Custom Meta)
设置中间件
definePageMeta({
// 这种方式是 Nuxt 3 处理父路由重定向的最佳实践之
middleware: (to) => {
// 重定向
if (to.path === '/tabs') {
return navigateTo('/tabs/one')
}
},
})
设置布局
definePageMeta({
// 使用 layouts/custom.vue
layout: 'custom',
// 或者:完全禁用布局
// layout: false
})
自定义元数据
definePageMeta({
// 这些属性会被合并到 route.meta 对象中
title: '用户设置页',
breadcrumb: '设置',
requireAdmin: true, // 自定义标志,配合全局中间件使用
keepAlive: true // 控制页面缓存
})
路由参数验证
- 在渲染页面之前,检查路由参数是否合法。如果不合法,可以返回 404 或重定向。
definePageMeta({
validate: async (route) => {
// 仅当 id 是数字时才渲染此页面
const isNumber = /^\d+$/.test(route.params.id as string)
// 返回 true 通过,返回 false 触发 404
return isNumber
}
})
页面过渡动画
- Nuxt 默认有页面切换动画,你可以针对特定页面修改或禁用它。
definePageMeta({
// 禁用此页面的过渡动画
pageTransition: false,
// 或者配置特定的过渡类名
// pageTransition: {
// name: 'rotate',
// mode: 'out-in'
// }
})
相关别名
{
"~": "/<srcDir>",
"@": "/<srcDir>",
"~~": "/<rootDir>",
"@@": "/<rootDir>",
"#shared": "/<rootDir>/shared",
"assets": "/<srcDir>/assets",
"public": "/<rootDir>/public",
"#build": "/<rootDir>/.nuxt",
"#internal/nuxt/paths": "/<rootDir>/.nuxt/paths.mjs"
}
配置别名
- images别名是最常用的,来直接导入images下的图片
import { fileURLToPath } from 'node:url'
export default defineNuxtConfig({
alias: {
'images': fileURLToPath(new URL('./assets/images', import.meta.url)),
'style': fileURLToPath(new URL('./assets/style', import.meta.url)),
'data': fileURLToPath(new URL('./assets/other/data', import.meta.url)),
},
})
使用
<img src="~images/main-bg.jpg">