- index.css 以 Tailwind 4 @theme 落地设计令牌,全部页面按新设计稿重写 样式:首页/笔记详情/标签页/登录/后台列表/编辑/回收站/设置/404 - Layout 重构导航与主题切换;新增 Toast 轻提示组件 - 移除 vite 手动 codeSplitting:分组 chunk 会被提升进入口静态依赖并对 HTML 发出 modulepreload,lazy 路由的 CodeMirror 在所有页面被预加载 (Lighthouse unused-javascript 549KiB 的根因) - vite dev 代理补 changeOrigin:false,保留浏览器原始 Host,避免后端 Origin 校验误判跨源 403
27 lines
855 B
TypeScript
27 lines
855 B
TypeScript
import { useEffect } from 'react'
|
|
import { useQuery } from '@tanstack/react-query'
|
|
import { api } from '../lib/api'
|
|
import type { SiteSettings } from '../lib/api'
|
|
|
|
export function useSiteTitle() {
|
|
return useQuery({
|
|
queryKey: ['site'],
|
|
queryFn: () => api<SiteSettings>('/api/site'),
|
|
staleTime: 5 * 60_000,
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 设置浏览器标签页标题。
|
|
* - 生产环境首帧由服务端注入首页标题;SPA 路由切换后由此 hook 接管。
|
|
* - dev 环境 index.html 占位符 `{{.Title}}` 也依赖此 hook 替换。
|
|
* pageTitle 缺省时仅显示站点名。
|
|
*/
|
|
export function useDocumentTitle(pageTitle?: string) {
|
|
const { data } = useSiteTitle()
|
|
const siteName = data?.site_title ?? 'Pure Note'
|
|
useEffect(() => {
|
|
document.title = pageTitle ? `${pageTitle} · ${siteName}` : siteName
|
|
}, [pageTitle, siteName])
|
|
}
|