406 字
2 分钟
Astro & Fuwari优化配置

Twikoo评论区 💬#

具体后端部署请参考 Twikoo 哦~ 我给相关代码添加了两个响应事件,解决了需要刷新一次才能显示的小问题呢!😊

新增编辑相关文件

src/components/Comment.astro
<div id="tcomment"></div>
<script is:inline>
window.twikooIsRun = false;
function loadTwikoo() {
19 collapsed lines
if (window.twikooIsRun) return;
const commentsContainer = document.getElementById("tcomment");
if (commentsContainer) {
const script = document.createElement("script");
script.src =
"https://registry.npmmirror.com/twikoo/1.6.44/files/dist/twikoo.min.js";
script.onload = () => {
const initScript = document.createElement("script");
initScript.innerHTML = `
twikoo.init({
envId: 'https://xxx',
el: '#tcomment',
});
`;
document.body.appendChild(initScript);
window.twikooIsRun = true;
};
document.body.appendChild(script);
}
}
document.addEventListener("astro:page-load", loadTwikoo);
document.addEventListener("DOMContentLoaded", loadTwikoo);
</script>

添加到喜欢的位置,比如我底部的评论区就很合适呀~

src/pages/posts/[...slug].astro
---
import Comment from "@components/Comment.astro";
---
...
<Markdown class="mb-6 markdown-content onload-animation">
<Content />
</Markdown>
{
8 collapsed lines
licenseConfig.enable && (
<License
title={entry.data.title}
slug={entry.slug}
pubDate={entry.data.published}
class="mb-6 rounded-xl license-container onload-animation"
/>
)
}
<Comment />

底部计时功能 ⏳#

实时显示本站运行时长哦~ 是不是很贴心!💕

添加配置项

src/types/config.ts
export type SiteConfig = {
date: Date
};
src/config.ts
export const siteConfig: SiteConfig = {
date: new Date('2020-04-15 00:00:00')
};

需要新增以下文件

src/components/RunningTime.svelte
<script>
import { siteConfig } from '@/config';
let days, hours, minutes, seconds;
function updateEstablishedTime() {
7 collapsed lines
var now = new Date();
var difference = now.getTime() - siteConfig.date.getTime();
days = Math.floor(difference / (1000 * 60 * 60 * 24));
hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
seconds = Math.floor((difference % (1000 * 60)) / 1000);
setTimeout(updateEstablishedTime, 1000);
}
updateEstablishedTime();
</script>
<span>
本站已稳定运行 {days} 天 {hours} 小时 {minutes} 分钟 {seconds} 秒
</span>

在网站底部引用相关文件就好啦~

src/components/Footer.astro
---
import { Icon } from "astro-icon/components";
import RunningTime from "./RunningTime.svelte";
---
<div class="transition text-50 text-sm text-center">
3 collapsed lines
&copy; <span id="copyright-year">{currentYear}</span> {profileConfig.name}. All Rights Reserved. /
<a class="transition link text-[var(--primary)] font-medium" target="_blank" href={url('rss.xml')}>RSS</a> /
<a class="transition link text-[var(--primary)] font-medium" target="_blank" href={url('sitemap-index.xml')}>Sitemap</a><br>
<div class="flex items-center justify-center gap-1"><Icon name='fa6-solid:heart' class="text-[0.8rem] text-red-500 animate-pulse"></Icon><RunningTiclient:load /></div>
3 collapsed lines
Powered by
<a class="transition link text-[var(--primary)] font-medium" target="_blank" href="https://astro.build">Astro</a> &
<a class="transition link text-[var(--primary)] font-medium" target="_blank" href="https://github.com/saicaca/fuwari">Fuwari</a>
</div>
Astro & Fuwari优化配置
https://memo.moieo.net/2025/09/21/143106/
作者
Moieo
发布于
2025-09-21
许可协议
CC BY-NC-SA 4.0