--- // 基础布局:字体按轨瘦身 + 非阻塞加载(Lighthouse P0:614 个 @font-face // 全量入关曾致 Perf 62);变字体二轮——静态三档合并 wght 轴单文件 // (CSS 345→115KB,主线程解析减半,FCP 5.7s 主因见 lh-local 审计) import sansVar from '@fontsource-variable/noto-sans-sc/index.css?url'; import mono400 from '@fontsource/jetbrains-mono/400.css?url'; import mono700 from '@fontsource/jetbrains-mono/700.css?url'; import kuaile from '@fontsource/zcool-kuaile/index.css?url'; import serifVar from '@fontsource-variable/noto-serif-sc/index.css?url'; import kai from 'lxgw-wenkai-screen-webfont/lxgwwenkaiscreen.css?url'; import '../styles/global.css'; import Header from '../components/Header.astro'; import Footer from '../components/Footer.astro'; import ThemeScript from '../components/ThemeScript.astro'; import Keyboard from '../components/geek/Keyboard.astro'; import { localeOf, localePath } from '../lib/locale'; import { siteFavicon } from '../lib/site-content'; import SearchDialog from '../components/SearchDialog.astro'; import BuildInfo from '../components/geek/BuildInfo.astro'; import { ClientRouter } from 'astro:transitions'; import { themeCss } from '../lib/theme'; interface Props { title: string; description?: string; /** 正文轨:reading 书评纸墨 / tech 技术(body 级字体氛围) */ track?: 'reading' | 'tech'; } const { title, description = 'wait4x 的博客:阅读 · 技术 · 摄影', track = 'tech' } = Astro.props; // hreflang 双向:zh 无前缀 ↔ /en/;x-default 指向 zh(中文是源语言) const rawPath = Astro.url.pathname.replace(/\/index\.html$/, ''); const zhPath = localeOf(rawPath) === 'en' ? localePath(rawPath, 'zh') : rawPath; const enPath = localePath(rawPath, 'en'); const withSlash = (p: string) => (p.endsWith('/') ? p : `${p}/`); // 站点图标可配置(后台「主页设置 → 站点图标」):缺省回退 /favicon.svg const favicon = await siteFavicon(); // 自指 canonical(T2):SEO 权重收敛到当前页自身,与 hreflang 组合覆盖双轨 const canonicalUrl = new URL(withSlash(rawPath), Astro.site).href; const themeStyle = await themeCss(); --- {title} {track === 'reading' && ( <> )}