This commit is contained in:
2026-01-03 00:23:04 +08:00
parent 4aa7a13950
commit 5bcb751ed6
7 changed files with 71 additions and 17 deletions

View File

@@ -37,7 +37,7 @@
target="_blank"
rel="noreferrer"
class="text-primary hover:text-accent transition-colors"
>Tailwind CSS</a
>Tailwind CSS 4</a
>
·
<a
@@ -56,10 +56,8 @@
<script setup>
import { onMounted, ref } from "vue";
import { useRuntimeConfig } from "#imports";
import siteConfig from "~/config";
const contact = siteConfig.footer || {};
const config = useRuntimeConfig();
const quote = ref("");
const from = ref("");
const fromWho = ref("");
@@ -98,21 +96,22 @@ const fetchHitokoto = async () => {
const fetchStats = async () => {
try {
if (!siteConfig.umami?.apiBase || !siteConfig.umami?.websiteId) {
if (!siteConfig.umami?.apiEndpoint || !siteConfig.umami?.websiteId) {
return;
}
const apiBase = siteConfig.umami.apiBase;
const apiEndpoint = siteConfig.umami.apiEndpoint;
const websiteId = siteConfig.umami.websiteId;
const apiKey = config.public.umamiApiKey;
const apiKey = siteConfig.umami.apiKey;
if (!apiKey) return;
// 获取统计数据
const startAt = new Date(siteConfig.siteMeta.startTime);
const endAt = Date.now();
const startAt = new Date(siteConfig.siteMeta.startDate).getTime();
const resp = await fetch(
`${apiBase}/v1/websites/${websiteId}/stats?startAt=${startAt}&endAt=${endAt}`,
`${apiEndpoint}/v1/websites/${websiteId}/stats?startAt=${startAt}&endAt=${endAt}`,
{
headers: {
Authorization: `Bearer ${apiKey}`,

View File

@@ -8,6 +8,7 @@ const siteConfig = {
email: "i@rhen.cloud",
lang: "zh-CN",
favicon: "/favicon.svg",
startTime: "2025-10-01",
},
hero: {
@@ -75,10 +76,11 @@ const siteConfig = {
},
umami: {
enable: false,
url: "https://cloud.umami.is/script.js",
websiteId: "ddcd51c3-ccc7-45e4-81e6-11567027f69b",
apiBase: "https://api.umami.is",
enable: true,
scriptUrl: "https://cloud.umami.is/script.js",
apiKey: "api_MGcpRPYMcBmTKZOKdUVpr7mlBoWkck5g",
websiteId: "b33dfd14-7e62-498b-a199-de0ac38a1d44",
apiEndpoint: "https://api.umami.is",
},
};

View File

@@ -3,7 +3,6 @@ const route = useRoute();
</script>
<template>
<!-- <UContainer> -->
<div class="font-spacegrotesk relative min-h-screen overflow-x-hidden flex flex-col">
<MainHeader />
<main class="flex-1">
@@ -22,7 +21,6 @@ const route = useRoute();
<!-- <div class="absolute inset-0 opacity-[0.03] dark:opacity-[0.05] mix-blend-overlay"></div> -->
</div>
</div>
<!-- </UContainer> -->
</template>
<style scoped>

View File

@@ -0,0 +1,29 @@
import { defineNuxtPlugin } from "#app";
import { VueUmamiPlugin } from "@jaseeey/vue-umami-plugin";
import type { Router } from "vue-router";
import siteConfig from "~/config";
export default defineNuxtPlugin((nuxtApp) => {
if (!import.meta.client) return;
if (!siteConfig.umami?.enable) return;
// 跳过在 localhost 环境下加载 Umami
if (
typeof window !== "undefined" &&
(window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1")
) {
console.log("Umami plugin skipped on localhost");
return;
}
const router = nuxtApp.$router as Router | undefined;
if (!router) return;
nuxtApp.vueApp.use(
VueUmamiPlugin({
websiteID: siteConfig.umami.websiteId,
scriptSrc: siteConfig.umami.scriptUrl,
router,
}),
);
});