我正在使用 Nuxt.js 生成静态页面。我希望每个页面都有一个唯一的<title>
标签和<meta property="og:title" ... >
标签。
当前实施
我目前有一个生成这些标签的丑陋解决方案。我有两个看起来像这样的页面:
pages/foo.vue
export default {
head: {
title: 'Foo',
meta: [
{
property: 'og:title',
content: 'Foo',
},
],
}
};
pages/bar.vue
export default {
head: {
title: 'Bar',
meta: [
{
property: 'og:title',
content: 'Bar',
},
],
}
};
问题
这会为我的每个页面正确生成<meta property="og:title" ...>
标签,但它迫使我在所有页面上包含冗余代码。我的og:title
标签始终与我的<title>
标签匹配,因此在每个页面上独立地重新定义它们是没有意义的。
所需的解决方案
我想要一个允许我og:title
在layouts/default.vue
文件中甚至在nuxt.config.js
. 像这样的东西:
layouts/default.vue
export default {
head() {
return {
meta: [
{
property: 'og:title',
content: this.$page.head.title, // <-- This variable doesn't really exist
}
],
};
},
};
pages/foo.vue
export default {
head: { title: 'Foo' }
};
pages/bar.vue
export default {
head: { title: 'Bar' }
};
问题
有可能在这里消除样板吗?
更一般地说,Nuxt 布局是否可以引用特定于页面的数据?