2025-03-14 18:01:48 +08:00
|
|
|
<template>
|
|
|
|
|
<div><NavMenu />
|
|
|
|
|
<div class="news-container">
|
|
|
|
|
<h1 class="news-title">{{ article.title }}</h1>
|
|
|
|
|
<p class="news-date">{{ article.category }}</p>
|
|
|
|
|
<nuxt-content :document="article" />
|
|
|
|
|
</div>
|
|
|
|
|
<FooterMenu />
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import NavMenu from "../../components/NavMenu.vue";
|
|
|
|
|
import FooterMenu from "../../components/FooterMenu.vue";
|
|
|
|
|
export default {
|
|
|
|
|
async asyncData({ $content, params }) {
|
|
|
|
|
try {
|
|
|
|
|
// 读取 Markdown 文件内容
|
|
|
|
|
const article = await $content(params.slug).fetch();
|
|
|
|
|
return { article };
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("文章加载失败:",error);
|
|
|
|
|
return { article: null };
|
|
|
|
|
}
|
|
|
|
|
},
|
2025-03-27 14:40:36 +08:00
|
|
|
head() {
|
|
|
|
|
return {
|
|
|
|
|
title: this.article?.title || "默认标题",
|
|
|
|
|
meta: [
|
|
|
|
|
{ hid: "description", name: "description", content: this.article?.description || "默认描述" },
|
|
|
|
|
{ hid: "keywords", name: "keywords", content: this.article?.keywords || "默认关键词" },
|
|
|
|
|
{ hid: "og:title", property: "og:title", content: this.article?.title || "默认标题" },
|
|
|
|
|
{ hid: "og:description", property: "og:description", content: this.article?.description || "默认描述" },
|
|
|
|
|
{ hid: "og:image", property: "og:image", content: this.article?.image || "/default-image.png" },
|
|
|
|
|
{ hid: "og:url", property: "og:url", content: `https://yourwebsite.com/articles/${this.$route.params.slug}` }
|
|
|
|
|
]
|
|
|
|
|
};
|
|
|
|
|
}
|
2025-03-14 18:01:48 +08:00
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
.news-container {
|
|
|
|
|
max-width: 800px;
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
padding: 5rem 0;
|
|
|
|
|
}
|
|
|
|
|
.news-title {
|
|
|
|
|
font-size: 28px;
|
|
|
|
|
color: #ff6702;
|
|
|
|
|
}
|
|
|
|
|
.news-date {
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
color: #777;
|
|
|
|
|
}
|
|
|
|
|
</style>
|