feat: source blog entrys at compile time to improve loading time
This commit is contained in:
@@ -1,24 +1,9 @@
|
||||
<script lang="ts">
|
||||
import type { MDsveXComponent } from '$lib/types';
|
||||
import type { SvelteComponent } from 'svelte';
|
||||
import './style-entries.css';
|
||||
import type { BlogEntry } from './+page.server.ts';
|
||||
|
||||
let blog_entries: [string, SvelteComponent][] = $state(
|
||||
Object.entries(import.meta.glob('/src/routes/blogs/**/+page.svx', { eager: true }))
|
||||
.map(([key, value]) => [
|
||||
key.split('/src/routes').pop()?.split('/+page.svx').slice(0, -1).pop() as string,
|
||||
value as MDsveXComponent
|
||||
])
|
||||
.map(([link, val]) =>
|
||||
typeof val.metadata?.src !== 'undefined' ? [val.metadata?.src, val] : [link, val]
|
||||
)
|
||||
.map(([link, val]) => {
|
||||
if (val.metadata) val.metadata.date = Date.parse(val.metadata?.date);
|
||||
return [link, val];
|
||||
})
|
||||
.sort(([link1, a], [link2, b]) => b.metadata?.date - a.metadata?.date)
|
||||
);
|
||||
console.log(blog_entries);
|
||||
let { data } = $props();
|
||||
let blogs = data.blogs as BlogEntry[];
|
||||
</script>
|
||||
|
||||
<main>
|
||||
@@ -28,12 +13,12 @@
|
||||
This is a collection of things I've set up and created that I think might interest others.
|
||||
</p>
|
||||
</div>
|
||||
{#each blog_entries as [href, page]}
|
||||
<a {href} class="blog-entry">
|
||||
{#each blogs as blog}
|
||||
<a href={blog.src} class="blog-entry">
|
||||
<div>
|
||||
<h4>{page.metadata?.title}</h4>
|
||||
<p>{page.metadata?.desc}</p>
|
||||
<p class="date">{new Date(page.metadata?.date).toDateString()}</p>
|
||||
<h4>{blog.title}</h4>
|
||||
<p>{blog.desc}</p>
|
||||
<p class="date">{blog.date}</p>
|
||||
</div>
|
||||
<img src="blog-1.png" class="blog-image" />
|
||||
</a>
|
||||
|
||||
Reference in New Issue
Block a user