You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nuxt路由中间件中设置to.meta属性实现自定义页面标题

Nuxt中通过路由中间件实现页面动态标题

问题描述

我编写了如下路由中间件,希望通过它为每个页面设置带前缀的动态标题:

export default defineNuxtRouteMiddleware(async (to, from) => {
  console.log(to);
  useHead({
    title: `MYApp - ${(String(to.meta.name))}`,
  })
})

预期效果是首页标题为「MYApp - Home」,商品页为「MYApp - Shop」。但我在首页添加以下代码后,to.meta始终为空:

useHead({
  meta: [
    { name: 'Home', content: 'Content' }
  ],
})

解决方案

正确的做法是使用Nuxt提供的definePageMeta()来定义页面的元信息,而非通过useHead()的meta字段传递。

实现步骤

  • 在对应页面中定义页面元信息
    • 首页(示例路径:pages/index.vue):
      definePageMeta({
        name: 'Home'
      })
      
    • 商品页(示例路径:pages/shop.vue):
      definePageMeta({
        name: 'Shop'
      })
      
  • 保持路由中间件不变
    你编写的原有路由中间件代码无需修改,它会自动读取当前页面通过definePageMeta定义的name字段,动态生成对应的页面标题。

内容的提问来源于stack exchange,提问作者Some Name

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:57:23