我有一个用Nuxt构建的网页,对于不同的页面,我想在标题中使用不同的标题并使用不同的元描述。我该怎么做?
我在Nuxt文档中找到了head()方法,但这似乎不适用于我。
在我的contact.vue中:
export default class Contact extends Vue {
head() {
return {
title: 'Contact page',
meta: [
{ hid: 'description', name: 'description', content: 'This is a contact page' }
]
}
}
}
在我的nuxt.config.js中:
head: {
title: 'My website',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: process.env.npm_package_description || '' }
],
}
根据文档,我希望这会生成元标记。但是它仅显示nuxt.config.js中声明的标题和元描述。我在这里想念什么?
答案 0 :(得分:0)
我知道了。 在组件中,我将head方法放入类中。这没用。当我将它放在Component装饰器中时,就像这样:
@Component({
head(): object {
return {
title: this.$i18n.t('meta.home.title'),
meta: [
{
hid: 'description',
name: 'description',
content: this.$i18n.t('meta.home.description')
},
]
}
}
})
export default class Home extends Vue {
...
}
确实有用。
起初我遇到了错误
Object literal may only specify known objects and 'head' does not exist in type 'ComponentOptions'
此问题通过扩展ComponentOptions来解决,如下所示:
declare module "vue/types/options" {
interface ComponentOptions<V extends Vue> {
head?: etc etc
}
}