Some checks failed
Release / Release (push) Failing after 26s
Signed-off-by: kerbores <kerbores@gmail.com>
45 lines
979 B
Markdown
45 lines
979 B
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
|
|
return {
|
|
title: post.frontmatter.title,
|
|
date: new Date(post.frontmatter.date),
|
|
tags: post.frontmatter.tags,
|
|
url: path.replace('.md', '')
|
|
}
|
|
}).sort((a, b) => b.date - a.date)
|
|
})
|
|
</script>
|
|
|
|
# 文章归档
|
|
|
|
<div class="archive-list">
|
|
<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>
|