Avage tĂŒĂŒbikindla sisuhaldussĂŒsteemi jĂ”ud Astro sisukogudega. See pĂ”hjalik juhend hĂ”lmab seadistamist, kasutamist, tĂ€iustatud funktsioone ja parimaid tavasid vastupidavate ja hooldatavate veebisaitide loomiseks.
Astro sisukogud: TĂ”stke oma veebisaiti tĂŒĂŒbikindla sisuhaldussĂŒsteemiga
Astro, populaarne staatilise saidi generaator, pakub vĂ”imsat funktsiooni nimega Sisukogud. See sĂŒsteem pakub struktureeritud ja tĂŒĂŒbikindlat viisi oma veebisaidi sisu haldamiseks, tagades jĂ€rjepidevuse, vĂ€hendades vigu ja parandades ĂŒldist arenduskogemust. ĂkskĂ”ik, kas ehitate isiklikku blogi, dokumentatsioonisaidi vĂ”i keerukat e-kaubanduse platvormi, saavad sisukogud teie töövoogu oluliselt sujuvamaks muuta.
Mis on Astro sisukogud?
Sisukogud on teie Astro projekti spetsiaalne kataloog, kus saate korraldada oma sisufaile (tavaliselt Markdown vĂ”i MDX). Iga kogu on mÀÀratletud skeemiga, mis mÀÀrab teie sisu frontmatter'i (iga faili alguses olevad metaandmed) eeldatava struktuuri ja andmetĂŒĂŒbid. See skeem tagab, et kogu kogu sisu vastab ĂŒhtsele vormingule, vĂ€ltides vastuolusid ja vigu, mis vĂ”ivad tekkida kĂ€sitsi andmesisestuse tĂ”ttu.
MĂ”elge sellele kui andmebaasile, kuid teie sisufailide jaoks. Sisu ei salvestata andmebaasiserverisse, vaid lihttekstifailidesse, mis pakuvad versioonikontrolli eeliseid ja vĂ”imaldavad teil sisu koodile lĂ€hedal hoida. Kuid erinevalt lihtsalt Markdown-failide kaustast tagavad sisukogud struktuuri ja tĂŒĂŒbikindluse skeemi kaudu.
Miks kasutada sisukogusid?
- TĂŒĂŒbikindlus: TypeScripti integreerimine tagab, et teie sisu andmed on arenduse ajal tĂŒĂŒbikontrollitud, tuvastades vead varakult ja vĂ€ltides kĂ€itusajal tekkivaid probleeme. See on eriti kasulik suuremates projektides, kus on mitu kaastöölist.
- Skeemi valideerimine: MÀÀratletud skeem valideerib iga sisufaili frontmatter'i, tagades, et kĂ”ik nĂ”utavad vĂ€ljad on olemas ja Ă”iget tĂŒĂŒpi.
- Parem sisu jĂ€rjepidevus: JĂ€rjepideva struktuuri jĂ”ustamisega aitavad sisukogud sĂ€ilitada kogu teie veebisaidi ĂŒhtlast vĂ€limust ja tunnetust.
- TĂ€iustatud arendaja kogemus: TĂŒĂŒbikindel API pakub teie IDE-s suurepĂ€rast automaatset lĂ”petamist ja veatuvastust, muutes sisuhalduse lihtsamaks ja tĂ”husamaks.
- Lihtsustatud andmetele juurdepÀÀs: Astro pakub mugavat API-t oma kogudest sisu pÀringute esitamiseks ja sellele juurdepÀÀsuks, lihtsustades andmete otsimist teie komponentides.
- Sisu korraldus: Kogud pakuvad selget ja loogilist struktuuri teie sisu korraldamiseks, muutes selle leidmise ja haldamise lihtsamaks. NÀiteks vÔib dokumentatsioonisaidil olla kogud "juhendid", "api-viide" ja "muudatuste logi".
Sisukogudega alustamine
Siin on samm-sammult juhend sisukogude juurutamiseks oma Astro projektis:
1. Lubage sisukogud
Esmalt lubage integratsioon @astrojs/content
failis astro.config.mjs
(vÔi astro.config.js
):
// astro.config.mjs
import { defineConfig } from 'astro/config';
import mdx from '@astrojs/mdx';
import { contentIntegration } from '@astrojs/content'
export default defineConfig({
integrations: [
mdx(),
contentIntegration()
],
});
2. Looge sisukogu kataloog
Looge kataloog nimega src/content/[collection-name]
, kus [collection-name]
on teie kogu nimi (nt src/content/blog
). Astro tunneb selle kataloogi automaatselt sisukoguna Àra.
NÀiteks 'blogi' kogu loomiseks peaks teie projekti struktuur vÀlja nÀgema selline:
src/
content/
blog/
my-first-post.md
my-second-post.md
...
pages/
...
3. MÀÀratlege kogu skeem
Looge fail src/content/config.ts
(vÔi src/content/config.js
), et mÀÀratleda oma kogu skeem. See fail ekspordib objekti config
, mis mÀÀrab iga kogu skeemi.
Siin on nÀide 'blogi' kogu skeemist:
// src/content/config.ts
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z
.string()
.or(z.date())
.transform((val) => new Date(val)),
updatedDate: z
.string()
.optional()
.transform((str) => (str ? new Date(str) : undefined)),
heroImage: z.string().optional(),
tags: z.array(z.string()).optional(),
}),
});
export const collections = {
blog,
};
Selgitus:
defineCollection
: seda funktsiooni kasutatakse sisukogu mÀÀratlemiseks.schema
: see atribuut mÀÀratleb kogu frontmatter'i skeemi.z.object
: see mÀÀratleb skeemi JavaScripti objektina. Me kasutame Zodit skeemi valideerimiseks, mis on populaarne TypeScript-first skeemideklaratsiooni ja valideerimisteek.z.string()
,z.date()
,z.array()
: need on Zodi skeemitĂŒĂŒbid, mis mÀÀratlevad iga vĂ€lja jaoks eeldatavad andmetĂŒĂŒbid.z.optional()
: muudab vÀlja valikuliseks.transform
: kasutatakse frontmatter'i andmete teisendamiseks. Sel juhul tagame, etpubDate
jaupdatedDate
onDate
objektid.
4. Looge sisufaile
Looge oma kogu kataloogis Markdown- vÔi MDX-faile (nt src/content/blog/my-first-post.md
). Iga fail peaks sisaldama frontmatter'i, mis vastab teie mÀÀratletud skeemile.
Siin on nÀide Markdown-failist koos frontmatter'iga:
---
title: My First Blog Post
description: This is a short description of my first blog post.
pubDate: 2023-10-27
heroImage: /images/my-first-post.jpg
tags:
- astro
- blog
- javascript
---
# My First Blog Post
This is the content of my first blog post.
5. JuurdepÀÀs sisule oma komponentides
Kasutage funktsiooni getCollection()
kataloogist astro:content
, et tuua sisu oma kogudest oma Astro komponentides. See funktsioon tagastab massiivi kirjetest, millest igaĂŒks esindab sisufaili.
// src/pages/blog.astro
import { getCollection } from 'astro:content';
const posts = await getCollection('blog');
<ul>
{posts.map((post) => (
<li>
<a href={`/blog/${post.slug}`}>{post.data.title}</a>
<p>{post.data.description}</p>
</li>
))}
</ul>
Selgitus:
getCollection('blog')
: hangib kÔik kirjed kogust 'blogi'.post.slug
: 'slug' on iga sisufaili jaoks unikaalne identifikaator, mis genereeritakse automaatselt failinimest (nt 'my-first-post' faili 'my-first-post.md' jaoks).post.data
: sisaldab iga kirje frontmatter'i andmeid, mis on tĂŒĂŒbikontrollitud vastavalt skeemile.
TĂ€iustatud funktsioonid ja kohandamine
Sisukogud pakuvad mitmeid tĂ€iustatud funktsioone ja kohandamisvalikuid, et kohandada sĂŒsteemi vastavalt teie konkreetsetele vajadustele:
1. MDX tugi
Sisukogud integreeruvad sujuvalt MDX-iga, vĂ”imaldades teil manustada JSX-komponente otse oma Markdowni sisusse. See on kasulik interaktiivse ja dĂŒnaamilise sisu loomiseks.
MDX-i kasutamiseks installige integratsioon @astrojs/mdx
ja konfigureerige see oma failis astro.config.mjs
(nagu nÀidatud 1. etapis). SeejÀrel looge MDX-faile (nt my-post.mdx
) ja kasutage oma sisus JSX-i sĂŒntaksit.
---
title: My MDX Post
description: This post uses MDX.
---
# My MDX Post
<MyComponent prop1="value1" prop2={2} />
This is some regular Markdown content.
2. Kohandatud skeemitĂŒĂŒbid
Zod pakub laias valikus sisseehitatud skeemitĂŒĂŒpe, sealhulgas string
, number
, boolean
, date
, array
ja object
. Samuti saate mÀÀratleda kohandatud skeemitĂŒĂŒpe, kasutades Zodi meetodit .refine()
, et jÔustada spetsiifilisemaid valideerimisreegleid.
NÀiteks vÔite valideerida, kas string on kehtiv URL:
// src/content/config.ts
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({
schema: z.object({
title: z.string(),
url: z.string().url(), // Validates that the string is a URL
}),
});
export const collections = {
blog,
};
3. Kohandatud slug'i genereerimine
Vaikimisi genereerib Astro iga sisufaili slug'i failinimest. Saate seda kÀitumist kohandada, lisades frontmatter'isse atribuudi slug
vÔi kasutades atribuuti entry.id
, et luua kohandatud slug faili tee pÔhjal.
NĂ€iteks faili tee kasutamiseks slug'i genereerimiseks:
// src/pages/blog/[...slug].astro
import { getCollection, type CollectionEntry } from 'astro:content';
export async function getStaticPaths() {
const posts = await getCollection('blog');
return posts.map((post) => ({
params: { slug: post.slug }, // Use the default slug
props: {
post,
},
}));
}
type Props = {
post: CollectionEntry<'blog'>;
};
const { post } = Astro.props as Props;
4. Sisu filtreerimine ja sortimine
Saate kasutada JavaScripti massiivi meetodeid (filter
, sort
jne), et veelgi tÀpsustada oma kogudest hangitud sisu. NÀiteks vÔite filtreerida postitusi nende siltide pÔhjal vÔi sortida neid avaldamiskuupÀeva jÀrgi.
// src/pages/blog.astro
import { getCollection } from 'astro:content';
const posts = await getCollection('blog');
const featuredPosts = posts.filter((post) => post.data.tags?.includes('featured'));
const sortedPosts = posts.sort((a, b) => new Date(b.data.pubDate).getTime() - new Date(a.data.pubDate).getTime());
5. Rahvusvahelistumine (i18n)
Kuigi sisukogud ei paku otseselt i18n-funktsioone, saate rahvusvahelistumise juurutada, luues iga keele jaoks eraldi sisukogud vÔi kasutades frontmatter'i vÀlja, et nÀidata iga sisufaili keelt.
NĂ€ide eraldi kogude kasutamisest:
src/
content/
blog-en/
my-first-post.md
blog-es/
mi-primer-articulo.md
SeejÀrel oleks teil kaks kogu mÀÀratlust: blog-en
ja blog-es
, millest kummalgi on oma sisu.
NÀide vÀlja lang
kasutamisest frontmatter'is:
---
title: My First Blog Post
lang: en
---
# My First Blog Post
SeejÀrel filtreeriksite kogu vÀlja lang
pÔhjal, et tuua iga keele jaoks Ôige sisu.
Sisukogude kasutamise parimad tavad
- Planeerige oma skeem hoolikalt: mĂ”elge oma sisu struktuurile ja andmetĂŒĂŒpidele enne skeemi mÀÀratlemist. HĂ€sti kujundatud skeem muudab teie sisuhalduse pikemas perspektiivis lihtsamaks ja tĂ”husamaks.
- Kasutage kirjeldavaid vÀljanimesid: valige vÀljanimed, mis on selged ja enesestmÔistetavad. See parandab koodi loetavust ja hooldatavust.
- Esitage iga vÀlja jaoks selged kirjeldused: kasutage Zodi skeemis atribuuti
description
, et anda iga vÀlja jaoks kasulikke kirjeldusi. See aitab teistel arendajatel (ja teie tulevasel minal) mÔista iga vÀlja eesmÀrki. - JÔustage nÔutavad vÀljad: kasutage Zodi meetodit
required()
, et tagada, et kÔik nÔutavad vÀljad on frontmatter'is olemas. - Kasutage valikulisi vÀlju sÀÀstlikult: kasutage valikulisi vÀlju ainult siis, kui need on tÔesti valikulised. NÔutavate vÀljade jÔustamine aitab sÀilitada jÀrjepidevust ja vÀltida vigu.
- Dokumenteerige oma kogud: looge oma sisukogude jaoks dokumentatsioon, milles selgitatakse iga kogu eesmÀrki, skeemi struktuuri ja kÔiki konkreetseid valideerimisreegleid.
- Hoidke oma sisu korrastatuna: kasutage oma sisufailide jaoks jÀrjepidevat nimetamiskonventsiooni ja korraldage need oma kogudes loogilistesse kataloogidesse.
- Testige oma kogusid pÔhjalikult: kirjutage teste, et tagada oma sisukogude korrektne toimimine ja skeem valideerib frontmatter'i ootuspÀraselt.
- Kaaluge CMS-i kasutamist sisuloojate jaoks: sisurikka veebisaidi puhul kaaluge Astro sidumist peatu CMS-iga. See pakub kasutajasÔbralikku liidest sisuloojatele, kes ei pea koodiga suhtlema. NÀited hÔlmavad Contentfuli, Strapi ja Sanity.
NĂ€ited kasutusjuhtumite kohta: isiklikest blogidest ĂŒlemaailmse e-kaubanduseni
Astro sisukogude mitmekĂŒlgsus muudab need sobivaks mitmesuguste projektide jaoks:- Isiklik blogi: hallake blogipostitusi vĂ€ljadega pealkiri, avaldamiskuupĂ€ev, autor, sisu ja sildid. See vĂ”imaldab hĂ”lpsat sisu vĂ€rskendamist, blogirulli genereerimist ja kategooriate loendit.
- Dokumentatsioonisaidid: struktureerige dokumentatsioonilehti vÀljadega pealkiri, versioon, kategooria ja sisu. VÔimaldab jÀrjepidevat dokumentatsiooni struktuuri ja lihtsat navigeerimist erinevate versioonide vahel. MÔelge suurele avatud lÀhtekoodiga projektile nagu Kubernetes, kus dokumentatsioon on kriitilise tÀhtsusega.
- Turundusveebisait: mÀÀratlege lehed vÀljadega pealkiri, kirjeldus, mÀrksÔnad ja sisu. Optimeerige sisu SEO jaoks ja sÀilitage kaubamÀrgi jÀrjepidevus kÔigil lehtedel.
- E-kaubanduse platvorm: kataloogige tooted vĂ€ljadega nimi, hind, kirjeldus, pildid ja kategooriad. Rakendage dĂŒnaamiline toodete loend ja hĂ”lbustage lihtsaid toodete vĂ€rskendusi. Ălemaailmse e-kaubanduse nĂ€ite puhul kaaluge erinevate kogude olemasolu piirkonniti, et kohandada kohalike turgude ja Ă”iguslike nĂ”uetega. See vĂ”imaldaks erinevaid vĂ€lju, nagu maksuteave vĂ”i regulatiivsed lahtiĂŒtlused, sĂ”ltuvalt riigist.
- Teadmiste baas: korraldage artikleid vÀljadega pealkiri, teema, autor ja sisu. Lubage kasutajatel hÔlpsalt otsida ja sirvida artikleid teema pÔhjal.