gpt4 book ai didi

vue.js - 如何在 Vue Meta 3 中创建自定义元标签?

转载 作者:行者123 更新时间:2023-12-02 02:10:36 47 4
gpt4 key购买 nike

我正在使用 Vue Meta 3 向网站提供元数据。 API 是 here

我不明白如何提供自定义元标记(例如 Open Graph 标记,例如 og:type)。这是我在组件中尝试做的:

setup() {
useMeta({
title: "Homepage",
meta: [
{name: "hunky:dory", content: "website"}
],
description: "This is the homepage."
})
},

输出的 HTML 最终是这样的:

<head>
<title>Homepage</title>
<meta name="description" content="This is the homepage.">
<meta name="meta" content="website"> <!-- should be <meta name="hunky:dory content="website"> -->
</head>

如果我把代码改成这样:

setup() {
useMeta({
title: "Homepage",
"hunky:dory": [
{content: "website"}
],
description: "This is the homepage."
})
},

我得到非法的 HTML 输出:

<head>
<title>Homepage</title>
<meta name="description" content="This is the homepage.">
<hunky:dory>website</hunky:dory> <!-- total nonsense -->
</head>

如何得到输出:

<head>
<title>Homepage</title>
<meta name="description" content="This is the homepage.">
<meta name="hunky:dory" content="website">
</head>

最佳答案

让 og meta 工作有两个部分——我想我可以帮助完成第 1 部分:

  1. 正确的 vue-meta 语法
  2. 服务器端呈现 (SSR)

第 1 部分:Vue 3 的 vue-meta

我用 vue-class-component 写的,它似乎可以工作:

meta = setup(() => useMeta(computed(() => ({
title: this.event?.name ?? 'Event not found',
og: {
image: this.event?.bannerUrl ?? 'http://yourwebsite.com/images/default-banner.png'
}
}))))

...大概在 vanilla Vue 3 中转化为:

setup() {  
useMeta(
computed(() => ({
title: this.event?.name ?? 'Event not found',
og: {
image: this.event?.bannerUrl ?? 'http://yourwebsite.com/images/default-banner.png'
}
}))
)
}

结果:

<meta property="og:image" content="http://cloudstorage.com/images/event-123.png">

引用资料:

第 2 部分:SSR

完成第 1 部分后,我意识到我没有设置 SSR...所以我只是为我的用户呈现元数据,而不是为 Facebook 的爬虫(不是很有用)。恐怕我还没有在我的项目中解决这个问题; 也许其他人可以参与其中!

在那之前,也许这会让你开始:

注意:vue-metaNuxt GitHub 组织下 => 你可能会考虑迁移到 Nuxt v3(它建立在Vue 的):

关于vue.js - 如何在 Vue Meta 3 中创建自定义元标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67789078/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com