提问人:Dimebag 提问时间:11/9/2023 最后编辑:Dimebag 更新时间:11/9/2023 访问量:17
Sveltekit 静态网站博客显示按客户端当前日期过滤的数据
Sveltekit static website blog show data filtered on client current date
问:
免责声明:我是一名非网络工程师,试图使用 sveltekit 建立个人博客。
我想要什么:一个静态博客(目前托管在github页面上)。我想提前写博客文章,让它们只在达到发布日期时显示,例如,我将发布日期设置为 2023-11-01,那么只有在从该日期开始重新加载页面时才会显示。
这可能吗?如何?
法典:
-- svelte.config.js
import adapter from '@sveltejs/adapter-static';
const config = {
...
kit: {
adapter: adapter(),
}
}
-- +layout.ts
export const prerender = true;
-- BlogPosts.svelte
<script>
export let posts: BlogPost[];
</script>
<section>
<ul class="posts">
{#each posts as post}
<li class="post">
<a href={post.slug} class="title">{post.title}</a>
...
</li>
{/each}
</ul>
</section>
-- +page.svelte
<script>
export let data;
</script>
<BlogPostList posts={data.postsAsOfToday} />
-- +page.ts
export async function load({ fetch }) {
// the endpoint simply returns all blogposts from markdown files in the same repo
const response = await fetch(base + '/api/blog');
const posts: BlogPost[] = await response.json();
const dateToday = new Date();
const postsAsOfToday = posts.filter((post) => new Date(post.date) <= dateToday);
return { postsAsOfToday };
}
但是我可以清楚地看到如何在构建时创建静态 html,并且只显示它,而不管加载网页时的当前情况如何。然而,难道不应该让一些 javascript 在客户端“在运行时”过滤这些帖子,同时仍然保持它是一个“静态”博客吗?npm run build
new Date()
编辑:这也会导致相同的行为:
--- BlogPosts.svelte
{#each posts as post}
{#if new Date(post.date) <= new Date()}
...
{/if}
{/each}
答: 暂无答案
下一个:使用委托不可见的表单对象
评论