28 lines
828 B
Plaintext
28 lines
828 B
Plaintext
---
|
||
import Layout from "@/layouts/Layout.astro"
|
||
import Article from "@/components/pages/article.astro"
|
||
import { fetchArticleById } from "@/lib/data"
|
||
|
||
// 按需 SSR:服务端按 ?id= 取数并渲染(保留既有 /article?id= 链接,无需改动其他页面)
|
||
export const prerender = false
|
||
|
||
const API = (import.meta.env.API_SSR || import.meta.env.PUBLIC_API_BASE || "http://localhost:8090").replace(/\/$/, "")
|
||
const id = Astro.url.searchParams.get("id")
|
||
let article: import("@/lib/data").RawArticle | null = null
|
||
let error: "missing" | "failed" | null = null
|
||
if (!id) {
|
||
error = "missing"
|
||
} else {
|
||
try {
|
||
article = await fetchArticleById(id, API)
|
||
} catch {
|
||
article = null
|
||
}
|
||
error = article ? null : "failed"
|
||
}
|
||
---
|
||
|
||
<Layout>
|
||
<Article article={article} locale="en" apiBase={API} error={error} />
|
||
</Layout>
|