vhAstro-Theme/src/layouts/Layout.astro
2025-02-20 19:04:58 +08:00

60 lines
1.8 KiB
Plaintext

---
import { ClientRouter } from "astro:transitions";
const { title, keywords, description, pagecover, activeNav } = Astro.props;
// Head 依赖
import Head from "../components/Head.astro";
// 顶部 Header
import Header from "../components/Header.astro";
// 底部 Footer
import Footer from "../components/Footer.astro";
// 返回顶部
import BackTop from "../components/BackTop.astro";
// 手机端侧边栏
import MobileSidebar from "../components/MobileSidebar.astro";
// Layout 样式
import "../styles/Layout.less";
---
<html lang="zh-CN">
<Head Title={title} Keywords={keywords} Description={description} PageCover={pagecover} />
<ClientRouter />
<body>
<MobileSidebar activeNav={activeNav} />
<Header activeNav={activeNav} />
<main class="vh-main">
<slot />
</main>
<Footer />
<BackTop />
<script>
import updateRouter from "../utils/updateRouter";
// 搜索
import { searchFn } from "../scripts/Search";
// 图片懒加载
import vhLzImgInit from "../scripts/vhLazyImg";
// 加载进度条
import NProgress from "nprogress";
import "nprogress/nprogress.css";
NProgress.configure({ easing: "ease", speed: 500, showSpinner: false, trickleSpeed: 200, minimum: 0.3 });
// Han Analytics 统计
import SITE_INFO from "../config";
const { HanAnalytics } = SITE_INFO;
import { LoadScript } from "../utils/index";
// 初始化 图片懒加载初
updateRouter("afterMount", () => {
// 预加载搜索数据
searchFn("");
// 图片懒加载初始化
vhLzImgInit();
// 进入页面,进度条结束
NProgress.done();
// Han Analytics 统计
HanAnalytics.enable && LoadScript(`${HanAnalytics.server}/tracker.min.js`, [{ k: "data-website-id", v: HanAnalytics.siteId }]);
});
// 离开页面,进度条开始
updateRouter("beforeCreate", NProgress.start);
</script>
</body>
</html>