我正在使用 Astro 构建一个网站,在其中我在许多不同的页面中共享数据库数据。我在项目根目录中有一个
members.json.ts
文件,然后我从中获取数据:
let response = await fetch(`${Astro.url.origin}/members.json`)
let data: any = await response.json();
我似乎在 Astro 文档中找不到有关构建顺序的任何内容。当我从每个页面获取数据时,有什么方法可以确保我的
members.json.ts
文件已完成构建?或者还有其他首选方法吗?
这被认为是一种反模式。您可以将
members.json.ts
API 抽象到一个单独的模块中,并导出一个函数(或任何您想要的)以在其他文件中使用,而不是通过请求传递数据,如下所示:
创建通用模块:
/src/members.ts
export function getMembers() {
return { // member data }
}
使用模块:
/src/pages/members.json.ts
import { getMembers } from '../../members'
export async function GET() {
return new Response(JSON.stringify(getMembers()))
}
/src/pages/index.astro
---
import { getMembers } from '../members'
const data = getMembers()
---