我开发了一个 Vue 应用程序,每个页面都有导航和内容。我需要为 Twitter 和 Facebook 卡的每个不同页面设置元标记。为此,我使用了 vue-meta 库,并提出了以下代码:
metaInfo() {
return {
meta: [
{
property: 'og:title',
content: `Card #${this.card_no ? this.card_no : ''}`,
vmid: 'og:title'
},
{
property: 'og:image',
content: `${this.card ? this.card.participantA.image : ''}`,
vmid: 'og:image'
},
{
property: 'og:description',
content: `${this.card ? this.card.description : ''}`,
vmid: 'og:description'
},
{
property: 'twitter:title',
content: `Card #${this.card_no ? this.card_no : ''}`,
vmid: 'twitter:title'
},
{
property: 'twitter:image',
content: `${this.card ? this.card.participantA.image : ''}`,
vmid: 'twitter:image'
},
{
property: 'twitter:description',
content: `${this.card ? this.card.description : ''}`,
vmid: 'twitter:description'
},
{
name: 'twitter:card',
content: `summary_large_image`,
vmid: 'twitter:card'
}
]
}
}
这些属性是从 mount() 钩子的 API 中获取的,我可以看到它们已正确添加。但是共享还没有起作用,我认为它们需要添加到主 index.html 中吗?但在我的情况下这是不可能的,因为它们是动态的,并不总是固定的。有没有解决的办法?我知道 SSR 可以解决这个问题,但目前这不是一个选项,因为此时使用 Nuxt 重写大多数应用程序是不可接受的。