Astro Static Site Generator 框架能否用于根据从 API 获取的数据动态创建页面?

Can the Astro Static Site Generator framework be used to create pages on the fly from data fetched from an API?

我们公司的一个项目是使用 Astro 和 Svelte 构建的。在此项目中,必须对 CMS 进行 API 调用以动态创建博客 post。我想要一种方法让我的客户写博客 posts,更新 CMS(GraphCMS) 并看到该网站创建了一个新的 post.

本质上,没有。静态站点生成器主要用于构建静态站点。一些解决方法包括在检测到内容更新时触发网站构建。

如果您的公司使用 Svelte,请查看 Sveltekit。参见:
https://docs.astro.build/comparing-astro-vs-other-tools/#sveltekit-vs-astro
https://kit.svelte.dev/
https://svelteland.github.io/svelte-kit-blog-demo/create-your-blog/

有两种方法可以做到这一点。

GraphCMS 允许您在操作完成时触发网络挂钩,在本例中是发布博客 post。您需要托管在 Vercel 或 Netlify 之类的东西上,但只要您的构建系统具有 Web 钩子触发器,它就可以接受有效负载并重建站点。完成需要一两分钟,但此人应该能够相对快速地看到新内容。

另一种方法,正如其他作者所建议的那样,是将 Astro 与 Svelte、React 或其他一些 client-side JS 一起使用,并添加一个 client-side 路由器,然后可以获取和呈现 posts 在客户端。这效率较低,因为您的用户将不得不等待数据被获取,而且它可能不会出现在搜索引擎中。