50 lines
1.1 KiB
Markdown
50 lines
1.1 KiB
Markdown
# 文章归档
|
|
|
|
<script setup>
|
|
import { ref, onMounted,inject } from 'vue'
|
|
|
|
const posts = ref([])
|
|
const tags = inject('tags')
|
|
|
|
onMounted(async () => {
|
|
const allPosts = import.meta.glob('./posts/*.md', { eager: true })
|
|
posts.value = Object.keys(allPosts).map(path => {
|
|
const post = allPosts[path].__pageData
|
|
console.log(allPosts[path])
|
|
console.log(post)
|
|
return {
|
|
title: post.frontmatter.title,
|
|
date: new Date(post.frontmatter.date),
|
|
tags: post.frontmatter.tags,
|
|
url: path.replace('./posts', '/posts').replace('.md', '')
|
|
}
|
|
}).sort((a, b) => b.date - a.date)
|
|
})
|
|
</script>
|
|
|
|
{{posts}} {{tags}}
|
|
|
|
<div class="archive-list">
|
|
<a-button type="primary">Primary Button</a-button>
|
|
<div v-for="post in posts" :key="post.url" class="post-item">
|
|
<a :href="post.url">{{ post.title }}</a>
|
|
<span class="date">{{ post.date.toLocaleDateString() }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<style scoped>
|
|
.archive-list {
|
|
max-width: 800px;
|
|
margin: 0 auto;
|
|
}
|
|
.post-item {
|
|
margin-bottom: 1rem;
|
|
padding: 1rem;
|
|
border-bottom: 1px solid #eee;
|
|
}
|
|
.date {
|
|
float: right;
|
|
color: #666;
|
|
}
|
|
</style>
|