vue3项目之路由 mate 元信息处理

路由 mate 元信息处理

这一节就是对我们的标题进行优化!

  • 首先进入路由中给每个路由填写基本的 mate 信息
let title = 'Airbnb爱彼迎 - 全球民宿_公寓_短租_住宿_预订平台'
let keywords = 'Airbnb,bnb,爱彼迎,爱彼迎官网,民宿,民宿预订平台,名宿,酒店预定,公寓,短租,住宿'
let description = 'Airbnb爱彼迎是全球民宿短租公寓预订平台,全球百万特色民宿、短租、酒店、公寓、客栈房源,价格优惠,更有树屋、海景别墅、花园洋房等多种特色住宿预订供您选择'

const routes = [
    {
        path: '/login',
        name: 'login',
        component: () => import('@/views/login/index.vue'),
        meta: {
            title: 'Airbnb爱彼迎 - 登录注册',
            keywords: '',
            description: '',
            keepAlive: false
        }
    },
    {
        path: '/home',
        name: 'home',
        component: () => import('@/views/home/index.vue'),
        meta: {
            title,
            keywords,
            description,
            keepAlive: false
        }
    },
    {
        path: '/detail/:id/:title',
        name: 'detail',
        component: () => import('@/views/detail/index.vue'),
        meta: {
            title: 'Airbnb爱彼迎 - ',
            keywords: '',
            description: '',
            keepAlive: false
        }
    },
]
  • 然后在 index.html 里面填写占位
<title></title>
<meta name="keywords" content="" />
<meta name="description" content="" />
  • 服务端渲染标题:进入 server.js
// 获取路由中的元信息(服务端渲染时改变标题)            
const { meta } = state.route
const { title, keywords, description } = meta


// 5. 注入渲染后的应用程序 HTML 到模板占位符中(重点!)
const html = template.replace(`<!--ssr-outlet-->`, appHtml)
.replace('\'<!--vuex-state-->\'', JSON.stringify(state))

.replace('<title>', `<title>${title}`)
.replace('<meta name="keywords" content="" />', `<meta name="keywords" content="${keywords}" />`)
.replace('<meta name="description" content="" />', `<meta name="description" content="${description}" />`)
  • 客户端渲染标题(重点):进入 entry-client.ts
// 新增一个路由后置守卫
router.afterEach((to, from, next) => {

    // 填充 mate 元信息
    const { title, keywords, description } = to.meta
    
    // 详情页标题
    const detailTitle = to.params?.title

    if (detailTitle) {
        document.title = title ? `${title}${detailTitle}` : ''
    } else {
        document.title = title ? `${title}` : ''
    }

    const keywordsMeta = document.querySelector('meta[name="keywords"]')
    keywordsMeta?.setAttribute("content", `${keywords}`)

    const descriptionMeta = document.querySelector('meta[name="description"]')
    descriptionMeta?.setAttribute("content", `${description}`)
})

到这里我们就实现了路由页面标题等信息的填写,利于 SEO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue3中的路由信息是一种可以添加在路由配置中的额外信息。它可以用来存储一些与路由有关的信息,例如页面的title、权限要求、页面访问方式等。 路由信息在Vue3的路由中扮演着非常重要的角色。它可以帮助我们更好地控制和管理路由,实现更精确的路由管理。 首先,路由信息可以用来设置页面的title。在一些需要动态修改页面title的场景下,我们可以在路由配置中添加对应的信息,然后通过路由导航守卫在切换路由时修改页面的title,从而实现动态修改页面title的效果。 其次,路由信息还可以用来实现页面的权限控制。我们可以设置某个路由需要的权限要求,然后在路由导航守卫中进行权限判断,如果当前用户没有权限访问该路由,则可以进行相应的处理,例如跳转到登录页面或显示无权限提示。 此外,路由信息还可以用来设置页面的访问方式。比如,我们可以为某个路由设置访问方式为只能通过特定渠道(如微信公众号、APP等)进行访问,通过在路由配置中添加相应的信息,并在全局路由导航守卫中进行判断,来限制页面的访问渠道。 综上所述,Vue3的路由信息在路由管理中发挥着非常重要的作用。它可以帮助我们实现动态修改页面title、权限控制和访问方式的管理,提升了路由的控制灵活性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cocoonne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值