vite.config 接入 vike 插件并改产出 dist/client+dist/server;feed 白名单 route 匹配 /、/board/:id、/post/:id(.html);spa catch-all ssr:false;onRenderHtml renderToReadableStream 等 allReady 输出完整 HTML 并带主题/缩放脚本;onRenderClient 沿用样式表等待+冷启动预热+hydrate 回退;getHomeStoreState 作用域 + hydrating 变体入 RequestScope;删除 index.html 与 main.tsx
25 lines
812 B
TypeScript
25 lines
812 B
TypeScript
import type { ReactNode } from 'react';
|
||
import './styles/global.css';
|
||
import { AuthProvider } from './hooks/useAuth';
|
||
import { ThemeProvider } from './hooks/useTheme';
|
||
import ErrorBoundary from './components/ErrorBoundary';
|
||
import { Toaster } from './components/ui/sonner';
|
||
import PullToRefresh from './components/PullToRefresh';
|
||
import TopProgressBar from './components/TopProgressBar';
|
||
|
||
/** 与路由无关的应用壳:Provider + 全局挂件(SSR 服务端 / 客户端共用) */
|
||
export default function AppShell({ children }: { children: ReactNode }) {
|
||
return (
|
||
<ThemeProvider>
|
||
<AuthProvider>
|
||
<ErrorBoundary>
|
||
{children}
|
||
<TopProgressBar />
|
||
<PullToRefresh />
|
||
<Toaster />
|
||
</ErrorBoundary>
|
||
</AuthProvider>
|
||
</ThemeProvider>
|
||
);
|
||
}
|