بيئات تشغيل Edge و Node.js
في سياق Next.js، يشير مصطلح بيئة التشغيل (Runtime) إلى مجموعة المكتبات وواجهات البرمجة والوظائف العامة المتاحة لشفرة التطبيق أثناء التنفيذ.
على الخادم، هناك بيئتي تشغيل حيث يمكن عرض أجزاء من كود التطبيق:
- بيئة تشغيل Node.js (الافتراضية) توفر الوصول إلى جميع واجهات برمجة Node.js والحزم المتوافقة من النظام البيئي.
- بيئة تشغيل Edge تعتمد على واجهات برمجة الويب (Web APIs).
الفروق بين بيئتي التشغيل
هناك العديد من الاعتبارات عند اختيار بيئة التشغيل. يوضح هذا الجدول الفروق الرئيسية بلمحة سريعة. إذا كنت تريد تحليلًا أكثر تفصيلاً للفروق، راجع الأقسام أدناه.
Node | Serverless | Edge | |
---|---|---|---|
الإقلاع البارد (Cold Boot) | / | ~250ms | فوري |
البث المباشر HTTP | نعم | نعم | نعم |
الإدخال/الإخراج | الكل | الكل | fetch |
القابلية للتوسع | / | عالية | الأعلى |
الأمان | عادي | عالي | عالي |
زمن الاستجابة | عادي | منخفض | الأقل |
حزم npm | الكل | الكل | مجموعة فرعية أصغر |
العرض الثابت | نعم | نعم | لا |
العرض الديناميكي | نعم | نعم | نعم |
إعادة التحقق من البيانات مع fetch | نعم | نعم | نعم |
بيئة تشغيل Edge
في Next.js، بيئة تشغيل Edge الخفيفة هي مجموعة فرعية من واجهات برمجة Node.js المتاحة.
بيئة تشغيل Edge مثالية إذا كنت بحاجة إلى تقديم محتوى ديناميكي ومخصص بزمن استجابة منخفض باستخدام دوال صغيرة وبسيطة. تأتي سرعة بيئة تشغيل Edge من استخدامها الحد الأدنى من الموارد، ولكن هذا قد يكون محدودًا في العديد من السيناريوهات.
على سبيل المثال، لا يمكن أن يتجاوز الكود المنفذ في بيئة تشغيل Edge على Vercel بين 1 ميجابايت و4 ميجابايت، وهذا الحد يشمل الحزم المستوردة والخطوط والملفات، وسيختلف اعتمادًا على بنية النشر الخاصة بك.
بيئة تشغيل Node.js
استخدام بيئة تشغيل Node.js يمنحك الوصول إلى جميع واجهات برمجة Node.js، وجميع حزم npm التي تعتمد عليها. ومع ذلك، فإنها ليست سريعة في البدء مثل المسارات التي تستخدم بيئة تشغيل Edge.
سيحتاج نشر تطبيق Next.js على خادم Node.js إلى إدارة وتوسيع وضبط البنية التحتية الخاصة بك. بدلاً من ذلك، يمكنك التفكير في نشر تطبيق Next.js على منصة بدون خادم مثل Vercel، والتي ستتعامل مع هذا نيابة عنك.
Node.js بدون خادم (Serverless)
الحل بدون خادم مثالي إذا كنت بحاجة إلى حل قابل للتوسع يمكنه التعامل مع أحمال حسابية أكثر تعقيدًا من بيئة تشغيل Edge. مع دوال Serverless على Vercel، على سبيل المثال، يكون الحجم الإجمالي للشفرة 50 ميجابايت بما في ذلك الحزم المستوردة والخطوط والملفات.
الجانب السلبي مقارنة بالمسارات التي تستخدم Edge هو أن دوال Serverless قد تستغرق مئات المللي ثانية للبدء قبل أن تبدأ في معالجة الطلبات. اعتمادًا على كمية الزيارات التي يتلقاها موقعك، قد يحدث هذا بشكل متكرر حيث أن الدوال ليست "دافئة" بشكل متكرر.
أمثلة
خيار بيئة التشغيل للقطعة (Segment)
يمكنك تحديد بيئة تشغيل لقطعات المسار الفردية في تطبيق Next.js الخاص بك. للقيام بذلك، قم بتعريف متغير يسمى runtime
وقم بتصديره. يجب أن يكون المتغير سلسلة نصية، ويجب أن تكون قيمته إما 'nodejs'
أو 'edge'
.
يوضح المثال التالي قطعة مسار صفحة تقوم بتصدير runtime
بقيمة 'edge'
:
export const runtime = 'edge' // 'nodejs' (الافتراضي) | 'edge'
export const runtime = 'edge' // 'nodejs' (الافتراضي) | 'edge'
يمكنك أيضًا تعريف runtime
على مستوى التخطيط (layout)، مما يجعل جميع المسارات تحت هذا التخطيط تعمل على بيئة تشغيل Edge:
export const runtime = 'edge' // 'nodejs' (الافتراضي) | 'edge'
export const runtime = 'edge' // 'nodejs' (الافتراضي) | 'edge'
إذا لم يتم تعيين بيئة تشغيل القطعة، سيتم استخدام بيئة تشغيل nodejs
الافتراضية. لا تحتاج إلى استخدام خيار runtime
إذا كنت لا تخطط للتبديل من بيئة تشغيل Node.js.
يرجى الرجوع إلى وثائق Node.js ووثائق Edge للحصول على القائمة الكاملة لواجهات البرمجة المتاحة. يمكن لكلا بيئتي التشغيل أيضًا دعم البث المباشر (streaming) اعتمادًا على بنية النشر الخاصة بك.