تطوير الويب 6 دقيقة للقراءة 3,177 مشاهدات

Astro في 2026: مجموعات المحتوى وجزر الخادم على Astro 7

شرح مجموعات المحتوى وجزر الخادم على Astro 7 الحالي — مع ما تغيّر منذ Astro 5، وتسريع البناء عبر Rolldown، وتخزين المسارات، ومتى لا يكون Astro الخيار الصحيح.

Astro framework

ملاحظة سريعة قبل كل شيء: إن كنت تبحث عن Astro 5، فالإصدار الحالي هو Astro 7.2. وقد ظهرت مجموعات المحتوى وجزر الخادم في Astro 5 وما تزالان ميزتين أساسيتين، فما تبحث عنه موجود — لكن صدر إصداران رئيسيان منذ ذلك الحين، وبعض الأمور صارت تعمل بشكل مختلف.

ويغطي هذا الدليل الأمرين: كيف تعمل هذه الميزات اليوم، وما الذي تغيّر في الطريق إلى هنا.

لماذا وُجد Astro

يشحن Astro صفرًا من JavaScript افتراضيًا. فالمكوّن يُعرَض إلى HTML وقت البناء وهذا ما يستقبله المتصفح — بلا ترطيب ولا زمن تشغيل إطار ولا شيء يُنزَّل.

ثم تختار التفاعلية لكل مكوّن على حدة، وهذه هي معمارية الجزر:

---
// src/pages/index.astro
import Header from '../components/Header.astro'
import SearchBox from '../components/SearchBox.jsx'
---

<Header />                       <!-- HTML ثابت، صفر كيلوبايت -->
<SearchBox client:visible />     <!-- يترطّب عند الوصول إليه -->

فـ SearchBox وحده يشحن JavaScript، وفقط حين يمرّر المستخدم إليه. وفي موقع محتوى هذا هو الفرق بين بضعة كيلوبايتات وبضع مئات.

مجموعات المحتوى

تمنح المجموعات ملفات Markdown مخططًا يُتحقق منه وقت البناء، فيفشل البناء عند خطأ مطبعي في البيانات الأمامية بدل عرض «undefined» في الإنتاج.

// src/content.config.ts
import { defineCollection, z } from 'astro:content'
import { glob } from 'astro/loaders'

const blog = defineCollection({
  loader: glob({ pattern: '**/*.md', base: './src/content/blog' }),
  schema: z.object({
    title: z.string().max(60),
    publishedAt: z.coerce.date(),
    draft: z.boolean().default(false),
    tags: z.array(z.string()).default([]),
  }),
})

export const collections = { blog }

والسطر title: z.string().max(60) يستحق النسخ، إذ يجعل عنوانًا طويلًا زيادةً عن الحد خطأ بناء بدل شيء تكتشفه في Search Console بعد أشهر.

وقد تغيّر أمران هنا منذ Astro 5: انتقل ملف الإعداد إلى src/content.config.ts، وصارت المجموعات تستخدم محمّلات صريحة — glob() للملفات أو محمّلًا مخصصًا لنظام إدارة محتوى أو واجهة برمجية. وهذا الأخير مهم: لم تعد المجموعة مرتبطة بملفات Markdown محلية.

جزر الخادم

تحل جزر الخادم مشكلة محددة وشائعة: صفحة ثابتة كليًا تقريبًا عدا جزء واحد مخصص للمستخدم.

فبدونها تختار بين عرض الصفحة كلها مع كل طلب — فتخسر ذاكرة CDN من أجل عنصر واحد — أو جلب ذلك العنصر من العميل، وهو ما يعني مؤشر تحميل وإزاحة في التخطيط.

---
import Cart from '../components/Cart.astro'
---

<ProductGrid />                          <!-- ثابت ومخزَّن -->
<Cart server:defer>
  <CartSkeleton slot="fallback" />
</Cart>

فتُشحن الصفحة من الذاكرة فورًا مع الهيكل البديل، ثم تُعرض السلة على الخادم وتُبثّ منفصلة. فتحتفظ بذاكرة CDN على 95% من الصفحة وتحصل على التخصيص معًا.

وفتحة fallback ليست اختيارية عمليًا، فبدونها يرى المستخدمون فراغًا حيث ستحطّ الجزيرة.

ما الذي تغيّر منذ Astro 5

Astro 5Astro 7
المُجمّعVite 6 مع RollupVite 8 مع Rolldown بلغة Rust
سرعة البناءالأساستجميع أسرع بفارق كبير
تخزين المساراتغير متاحمستقر بواجهة محايدة للمنصّة
التوجيه المتقدممستقر
معالجة الطلباتوسيطدعم مباشر لـ src/fetch.ts
خادم التطويرفي المقدمةيمكن تشغيله في الخلفية
السجلاتنصية للقراءة‏JSON منظَّم متاح
المجموعات الكبيرةتحميل كامل للذاكرةذاكرة أقل مع deferRender

و Astro 7 إصدار سرعة لا نموذجًا ذهنيًا جديدًا. وعنوانه الأبرز هو Vite 8 الذي يجلب Rolldown، وهو مُجمّع بلغة Rust أسرع بكثير من Rollup — وفي موقع محتوى كبير يكون فارق زمن البناء من النوع الذي تلاحظه مع كل نشر.

وإن كنت تدير مجموعة ضخمة فيستحق خيار deferRender في Astro 7.1 الانتباه، إذ تُخزَّن المدخلات دون عرضها أثناء المزامنة، فتقلّ الذاكرة في المواقع ذات آلاف الصفحات.

الترقية من Astro 5

npx @astrojs/upgrade

وانتقل إصدارًا رئيسيًا واحدًا في كل مرة — من 5 إلى 6 ثم من 6 إلى 7 — واقرأ دليل كل ترقية بدل القفز. ونقاط الاحتكاك المعتادة هي التكاملات التي لم تواكب، وأي شيفرة تعتمد على سلوك خاص بـ Rollup، لأن Rolldown تنفيذ مختلف.

متى لا يكون Astro الخيار الصحيح

  • التطبيقات عالية التفاعل. فلوحة تحكم يكون فيها كل شيء ديناميكيًا تقريبًا تصارع نموذج Astro، إذ يصبح كل مكوّن جزيرة فتضيع الفائدة.
  • حالة عميل مشتركة كثيفة. فالجزر معزولة بحكم التصميم، ومشاركة الحالة بين كثير منها تعني إضافة مخزن والعمل عكس التيار.
  • حين يكون فريقك غارقًا في منظومة إطار واحد. فـ Astro يدعم React و Vue و Svelte، لكن مكتبات التوجيه والبيانات الخاصة بإطار بعينه تفترض غالبًا أنها تملك الصفحة.

و Astro استثنائي للمحتوى: التوثيق والمدونات والمواقع التسويقية وكتالوجات المتاجر. وكلما زاد الجزء الثابت من صفحتك زاد تفوّقه. وهذه قوة حقيقية لا قيد، لكنها تعني أن الملاءمة محددة.

أسئلة شائعة

ما أحدث إصدار من Astro؟

‏Astro 7.2. وإن كنت تقرأ عن Astro 5 فهو متأخر بإصدارين رئيسيين — الميزات ما تزال موجودة، لكن المُجمّع والتوجيه وواجهات مجموعات المحتوى تقدّمت.

ما الفرق بين Astro 5 و Astro 7؟

‏Astro 7 إصدار سرعة بالدرجة الأولى: Vite 8 مع مُجمّع Rolldown، وتخزين مسارات مستقر، وتوجيه متقدم مستقر، ودعم src/fetch.ts، وخادم تطوير في الخلفية، وسجلات JSON منظَّمة. والنموذج الذهني لم يتغير، فالترقية آلية في معظمها.

ما جزر الخادم في Astro؟

طريقة لإبقاء الصفحة مخزَّنة مع عرض جزء منها لكل طلب. ضع server:defer على مكوّن مع بديل، فتُشحن الصفحة الثابتة من الذاكرة بينما يُبثّ ذلك المكوّن من الخادم.

كيف تعمل مجموعات المحتوى؟

تعلن مجموعة بمحمّل ومخطط Zod في src/content.config.ts، فيتحقق Astro من كل مدخل وقت البناء، فيفشل تاريخ خاطئ أو عنوان ناقص عند البناء بدل الوصول إلى الإنتاج، وتعود الاستعلامات بأنواع كاملة.

هل Astro جيد لتحسين محركات البحث؟

نعم، فالصفحات HTML معروضة من الخادم بقدر ضئيل جدًا من JavaScript، فهي سريعة وسهلة الزحف. وهذا يزيل عائقًا تقنيًا، ولا يغني عن محتوى جيد وبيانات وصف وربط داخلي.

هل أستطيع استخدام React مع Astro؟

نعم، إضافة إلى Vue و Svelte و Solid وغيرها، ويمكنك مزجها في صفحة واحدة. ويُعرَض كل منها إلى HTML ولا يترطّب إلا إن أضفت توجيه client:.

هل أستخدم Astro لتطبيق ويب؟

غالبًا لا. فـ Astro مبني للصفحات الغنية بالمحتوى والثابتة في معظمها. أما للوحة تحكم أو أي شيء عالي التفاعل، فإطار مصمَّم حول حالة العميل أنسب.

كيف أرقّي من Astro 5 إلى 7؟

شغّل npx @astrojs/upgrade وانتقل إصدارًا رئيسيًا في كل مرة مع قراءة دليل كل ترقية. وانتبه للتكاملات المتأخرة ولأي شيء يعتمد على سلوك خاص بـ Rollup، لأن Astro 7 يجمّع بـ Rolldown.

مشاركة هذه المقالة:
ES
كتبه

Edrees Salih

مهندس برمجيات متكامل يتمتع بخبرة 9 سنوات. شغوف ببناء حلول قابلة للتطوير ومشاركة المعرفة مع مجتمع المطورين.

عرض الملف الشخصي

التعليقات (0)

اترك تعليقًا

لن يتم نشر بريدك الإلكتروني.

لا توجد تعليقات بعد. كن أول من يشارك أفكاره!

مقالات ذات صلة

مقالات ذات صلة

هل تحتاج مساعدة في مشروعك؟

احجز استشارة مجانية لمدة 30 دقيقة لمناقشة تحدياتك التقنية واستكشاف الحلول معًا.