在这篇文章中,我们将探讨如何在我们的项目中添加vue-meta,并使用它来处理组件中的元数据。
什么是vue-meta
“vue-meta 是提供Vue插件的模块,该插件使我们能够动态添加组件中的元数据。
这意味着在我们有多条路由的项目中,如果我们想根据当前页面上呈现的路由动态更新SEO的元标签,vue-meta将为我们处理,同时让我们控制应用元数据。
Setup
首先,我们需要将vue-meta添加到我们的项目中,并让Vue知道我们想将其用作可用于所有组件的插件。
npm install vue-meta --save
然后,将vue-meta添加到我们的主js文件中。
// main.js or index.js
import Vue from "vue";
import App from "./App.vue"; // main component
import Meta from "vue-meta";
Vue.use(Meta);
new Vue({
render: h => h(App)
}).$mount("#app");
添加元数据
现在,我们来看一个如何将元数据添加到组件的示例。
<template>
<div id="app">
<img width="25%" src="./assets/logo.png">
<HelloWorld msg="Hello Vue in CodeSandbox!"/>
</div>
</template>
<script>
import HelloWorld from "./components/HelloWorld";
export default {
name: "App",
components: {
HelloWorld
},
metaInfo() {
return {
title: "test meta data with vue",
meta: [
{
vmid: "description",
name: "description",
content:
"hello world, this is an example of adding a description with vueMeta"
}
]
};
}
};
</script>
可以看出,我们可以通过调用“metaInfo”函数并返回一个对象作为包含我们的元数据的值来做到这一点。
另外,我们可以根据某些逻辑动态设置元值,因为我们可以在组件级别访问它。
<template>
<div id="app">
<img width="25%" src="./assets/logo.png">
<HelloWorld msg="Hello Vue in CodeSandbox!"/>
</div>
</template>
<script>
import HelloWorld from "./components/HelloWorld";
export default {
name: "App",
components: {
HelloWorld
},
metaInfo() {
const a = "test";
return {
title: "test meta data with vue",
meta: [
...(a === "test" && [
{
vmid: "description",
name: "description",
content:
"hello world, this is an example of adding a description with vue-meta"
}
])
]
};
}
};
</script>
元数据类型
我们可以使用“vue-meta”插件或多或少地添加所需的任何类型的元数据,无论它是meta,title,link还是script。
在下面的内容中,我们将看到有关如何添加其中一些元数据的示例。
<script>
import HelloWorld from "./components/HelloWorld";
export default {
name: "App",
components: {
HelloWorld
},
metaInfo() {
const a = "test";
return {
title: "test meta data with vue",
meta: [
...(a === "test" && [
{
vmid: "description",
name: "description",
content:
"hello world, this is an example of adding a description with vue-meta"
}
])
],
script: [
{ src: '<https://services.postcodeanywhere.co.uk/js/address-3.91.js>', async: true, defer: true, body: true }
],
link: [
{
rel: 'canonical',
href: '<https://malikgabroun.com/>'
}
]
};
}
};
</script>
在上面的示例中,我们可以看到如何使用vue-meta将外部脚本添加到主体。在我们希望脚本包含在头部的情况下,我们可以通过删除body标志来实现。
Vmid
到目前为止,我们研究了如何设置vue-meta,并将元数据动态地添加到我们的组件中,然而,如果我们想在多个组件中设置特定属性的值,这将如何解决。
为了做到这一点,我们可以使用vmid,它是vue-meta提供给我们的一个特殊属性,以便在组件树中解析该值。因此,如果两组元具有相同的vmid,它将覆盖它,使用最后更新的组件(即子组件)的值,而不是合并它。
总结
总而言之,vue-meta是一个插件,在大多数vue框架中,它可以让我们控制网站中的元数据应该如何显示。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。