← Barcha postlar
2 daqiqa o'qish#nuxt#vue#vositalar

Nuxt Content v3 bilan statik blog qurish

Bu sayt qanday ishlaydi: Markdown kolleksiyalar, SQLite asosidagi so'rovlar va Nuxt bilan to'liq statik generatsiya.

Bu sayt — to'liq statik Nuxt ilovasi. Har bir post repo ichidagi Markdown fayl, nuxt generate esa hammasini oddiy HTML'ga aylantiradi. Sozlamaning qiziqarli qismlari quyida.

Kolleksiyalar tipizatsiyalangan

Nuxt Content v3 eski fayl-asosidagi so'rovlarni kolleksiyalar bilan almashtirdi — sxema e'lon qilasiz va frontmatter build vaqtida tekshiriladi:

const blogSchema = z.object({
  title: z.string(),
  description: z.string(),
  date: z.string(),
  tags: z.array(z.string()).default([]),
})

Endi frontmatter'dagi xatolar jimgina undefined ko'rsatish o'rniga build'ni to'xtatadi. Bu v2'ga nisbatan eng katta yutuq.

So'rovlar SQL'ga o'xshaydi, chunki ular SQL

Ichkarida kontent SQLite'da saqlanadi. So'rov API'si SQL'ga kompilyatsiya bo'ladi:

const posts = await queryCollection('blog_uz')
  .order('date', 'DESC')
  .limit(3)
  .all()

Ikki til — ikki kolleksiya

Ikki tilli sayt uchun har locale'ga alohida kolleksiya eng sodda yechim:

content/
  en/blog/    → blog_en kolleksiyasi, /blog manzilida
  uz/blog/    → blog_uz kolleksiyasi, /uz/blog manzilida

Kichik composable aktiv til bo'yicha to'g'ri kolleksiyani tanlaydi — qolgan kod i18n haqida umuman o'ylamaydi.

Natija

Server yo'q, production'da database yo'q, CMS obunasi yo'q. Faqat Markdown fayllar, git tarixi va istalgan CDN tarqata oladigan statik HTML.