Rumah > hujung hadapan web > tutorial js > AstroJS: Sepadukan kandungan Dev.to dengan mudah

AstroJS: Sepadukan kandungan Dev.to dengan mudah

Barbara Streisand
Lepaskan: 2024-12-29 00:02:10
asal
842 orang telah melayarinya

Mulakan projek baharu dengan templat blog

npm buat astro@terkini -- --template blog

AstroJS : Integra contenido de Dev.to de manera sencilla

Kami melancarkan aplikasi

cd [nama_projek] && npm run dev

AstroJS : Integra contenido de Dev.to de manera sencilla

AstroJS : Integra contenido de Dev.to de manera sencilla

Bermula dengan Astro 5, API Lapisan Kandungan telah diperkenalkan, alat yang membolehkan anda memuatkan data daripada mana-mana sumber semasa pembinaan tapak anda dan mengaksesnya melalui API yang mudah ditaip dengan selamat.

API ini menawarkan fleksibiliti untuk mengendalikan kandungan daripada pelbagai sumber, seperti fail Markdown tempatan, API jauh atau sistem pengurusan kandungan (CMS). Dengan mentakrifkan "koleksi" kandungan dengan skema tertentu, anda boleh menstruktur dan mengesahkan data anda dengan cekap. Selain itu, API Lapisan Kandungan meningkatkan prestasi pada tapak yang berat kandungan, mempercepatkan masa binaan dan mengurangkan penggunaan memori.

https://astro.build/blog/astro-5/

API Lapisan Kandungan Astro untuk menyepadukan siaran dev.to ke dalam tapak anda

Anda boleh menggunakan API Lapisan Kandungan Astro untuk menyepadukan siaran dev.to ke dalam tapak anda. Walaupun tiada pemuat khusus untuk dev.to, anda boleh membuat pemuat tersuai yang menggunakan APInya dan menyimpan siaran dalam koleksi kandungan di Astro.

Untuk mencapai matlamat ini, ikuti langkah berikut:

1. Konfigurasikan akses kepada dev.to API

AstroJS : Integra contenido de Dev.to de manera sencilla

AstroJS : Integra contenido de Dev.to de manera sencilla

AstroJS : Integra contenido de Dev.to de manera sencilla

Buat fail .env dalam akar projek
.env

DEV_TO_API_URL=https://dev.to/api/
DEV_API_KEY=tu_clave_de_api
Salin selepas log masuk
Salin selepas log masuk

2. Tentukan koleksi dalam Astro

Dalam src/content.config.ts, tentukan koleksi untuk siaran dev.to menggunakan API Lapisan Kandungan:

Apabila mencipta projek dengan templat Astro, ia secara automatik menjana koleksi untuk Blog

srccontent.config.ts

import { glob } from 'astro/loaders';
import { defineCollection, z } from 'astro:content';

const blog = defineCollection({
    // Load Markdown and MDX files in the `src/content/blog/` directory.
    loader: glob({ base: './src/content/blog', pattern: '**/*.{md,mdx}' }),
    // Type-check frontmatter using a schema
    schema: z.object({
        title: z.string(),
        description: z.string(),
        // Transform string to Date object
        pubDate: z.coerce.date(),
        updatedDate: z.coerce.date().optional(),
        heroImage: z.string().optional(),
    }),
});

export const collections = { blog };

Salin selepas log masuk
Salin selepas log masuk

Kini kami mencipta koleksi untuk artikel Dev.to

const devTo = defineCollection({
    loader: async () => {
        const headers = new Headers({
            "api-key": DEV_API_KEY,
        });
        const posts = await fetch(`${DEV_TO_API_URL}articles?username=jmr85`, {
            headers: headers
        }).then(res => res.json());

        return posts.map((post: any) => ({
        id: post.slug,
            title: post.title,
            description: post.description,
            pubDate: new Date(post.published_at),
            updatedDate: post.edited_at ? new Date(post.edited_at) : null,
            heroImage: post.cover_image || post.social_image,
        url: post.url,
        }));
    },
    schema: z.object({
        title: z.string(),
        description: z.string(),
        pubDate: z.coerce.date(),
        updatedDate: z.coerce.date().optional(),
        heroImage: z.string().nullable(),
    url: z.string(),
    }),
  });

export const collections = { blog, devTo };
Salin selepas log masuk

Ini ialah kod lengkap untuk
srccontent.config.ts

DEV_TO_API_URL=https://dev.to/api/
DEV_API_KEY=tu_clave_de_api
Salin selepas log masuk
Salin selepas log masuk

Lihat perincian dalam takrifan medan dalam skema, medan tersebut perlu sepadan dengan koleksi blog templat Astro dan kemudian tambah yang khusus pada koleksi siaran Dev.to. Mereka perlu mempunyai nama yang sama dengan jenis data, ini supaya kita boleh "mencantumkan" siaran penurunan harga daripada templat Astro dengan yang daripada Dev.to di bahagian Blog.

3. Gunakan siaran pada halaman anda:

Kini anda boleh mengakses siaran dev.to dalam komponen atau halaman Astro anda menggunakan getCollection:

Asalnya:

srcpagesblogindex.astro

import { glob } from 'astro/loaders';
import { defineCollection, z } from 'astro:content';

const blog = defineCollection({
    // Load Markdown and MDX files in the `src/content/blog/` directory.
    loader: glob({ base: './src/content/blog', pattern: '**/*.{md,mdx}' }),
    // Type-check frontmatter using a schema
    schema: z.object({
        title: z.string(),
        description: z.string(),
        // Transform string to Date object
        pubDate: z.coerce.date(),
        updatedDate: z.coerce.date().optional(),
        heroImage: z.string().optional(),
    }),
});

export const collections = { blog };

Salin selepas log masuk
Salin selepas log masuk

Sekarang kami akan melakukan lelaran siaran dengan syarat sebaris yang, jika ia adalah devto, akan mengubah hala ke url artikel di tapak https://dev.to/{username}/{slug-article }

 {
                        posts.map((post) => (
                            <li>
                                <a href={post.collection === "devTo" ? post.data.url : `/blog/${post.id}/`}>
                                    <img width={720} height={360} src={post.data.heroImage} alt="" />
                                    <h4>



<p><img src="https://img.php.cn/upload/article/000/000/000/173540174627117.jpg" alt="AstroJS : Integra contenido de Dev.to de manera sencilla"></p>

<p>Repositori: https://github.com/jmr85/astro-devto</p>


          

            
        
Salin selepas log masuk

Atas ialah kandungan terperinci AstroJS: Sepadukan kandungan Dev.to dengan mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan