美文网首页
管理头部Head内容

管理头部Head内容

作者: 翔子丶 | 来源:发表于2021-03-29 19:38 被阅读0次

接上篇配置VueRouter

服务端和客户端渲染都是用同一个页面模板,页面body部分是动态渲染,但是title和meta都是写死的,所以下面来演示如何为不同页面定制不同的head头部内容。

Vue Meta 是一个支持 SSR 的第三方 Vue.js 插件,可轻松实现不同页面的 head 内容管理。 使用它的方式非常简单,而只需在页面组件中使用 metaInfo 属性配置页面的 head 内容即可。

<template>
...
</template>
<script>
    export default {
        metaInfo: {
            title: 'My Example App',
            titleTemplate: '%s - Yay!',
            htmlAttrs: {
                lang: 'en',
                amp: true
            }
        }
    }
</script>

页面渲染出来的结果

<html lang="en" amp>
    <head>
        <title>My Example App - Yay!</title>
        ...
    </head>
</html>

使用步骤如下:

  • 安装: npm i vue-meta

  • 在通用入口将注册vue-meta,并混入metaInfo

    ...
    import VueMeta from 'vue-meta'
    
    Vue.use(VueMeta)
    Vue.mixin({
      metaInfo: {
        titleTemplate: '%s - 拉勾教育',
      },
    })
    ...
    
  • 在服务端渲染入口模块中适配 vue-meta

    ...
    const { app, router } = createApp()
    
    const meta = app.$meta()
    context.meta = meta
    ...
    
  • 最后在模板页面注入meta信息

    <head>
        {{{ meta.inject().title.text() }}}
        {{{ meta.inject().meta.text() }}}
    </head>
    
  • 在组件中添加不同的title信息

    // Home.vue
    {
        metaInfo: {
            title: '首页' // 首页 - 拉勾教育
        }
    }
    
    // About.vue
    {
        metaInfo: {
            title: 'About' // About - 拉勾教育
        }
    }
    

    更多属性设置请参考metaInfo properties

相关文章

网友评论

      本文标题:管理头部Head内容

      本文链接:https://www.haomeiwen.com/subject/nnxihltx.html