首页 > web前端 > js教程 > 如何构建 Astro 集合加载器

如何构建 Astro 集合加载器

Mary-Kate Olsen
发布: 2025-01-17 08:35:09
原创
142 人浏览过

How to build an Astro collection loader

Astro 的 1.14 版本引入了内容层 API,将内容集合扩展到本地文件之外。 虽然 Astro 为常见数据源(RSS、CSV 等)提供了加载器,但创建自定义加载器非常简单。 本指南演示了如何为爸爸笑话 API 构建加载程序。

项目设置

首先创建一个新的 Astro 项目:

<code class="language-bash">npm create astro@latest</code>
登录后复制

按照 CLI 提示操作。 然后启动开发服务器:

<code class="language-bash">npm run dev</code>
登录后复制

通过http://localhost:4321访问您的项目。

启用实验 API

内容层 API 是实验性的。 通过修改 astro.config.mjs:

来启用它
<code class="language-javascript">// astro.config.mjs
import { defineConfig } from 'astro/config';

export default defineConfig({
    experimental: {
        contentLayer: true,
    },
});</code>
登录后复制

创建加载器

创建一个新文件(例如,src/loaders/jokes.ts)来容纳您的加载程序。 此示例使用 TypeScript,但这不是强制性的。

<code class="language-typescript">// src/loaders/jokes.ts
import type { Loader } from 'astro/loaders';

export const jokesLoader: Loader = {
    name: 'jokes',
    load: async (context) => {
        const response = await fetch('https://icanhazdadjoke.com/', {
            headers: {
                Accept: 'application/json',
            },
        });

        const json = await response.json();

        context.store.set({
            id: json.id,
            data: json,
        });
    },
};</code>
登录后复制

装载机包括:

  • name(必需):加载程序的标识符。
  • load(必需):获取和处理数据的异步函数。 它接收一个 context 对象,提供对数据存储和记录器的访问。
  • schema(可选):用于数据验证的 Zod 模式。

将加载器连接到集合

创建一个配置文件(例如,src/content/config.ts)来定义您的集合:

<code class="language-typescript">// src/content/config.ts
import { defineCollection } from 'astro:content';
import { jokesLoader } from '../loaders/jokes';

const jokes = defineCollection({
    loader: jokesLoader,
});

export const collections = {
    jokes,
};</code>
登录后复制

访问数据

在 Astro 组件中,使用 getCollection:

访问数据
<code class="language-astro">---
import { getCollection } from 'astro:content';

const jokes = await getCollection('jokes');
---

<ul>
  {jokes.map(joke => <li>{joke.data.joke}</li>)}
</ul></code>
登录后复制

构建和运行

运行npm run build。 加载器将执行、获取并存储笑话数据。 然后 Astro 组件将显示获取的笑话。

结论

这说明了构建一个基本的 Astro 集合加载器。 这种方法可以扩展到处理更复杂的数据源并合并错误处理和分页等功能。 模块化设计允许创建可重复使用的加载器,并有可能将它们打包以供更广泛的使用。

以上是如何构建 Astro 集合加载器的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板