بيئات التشغيل (Edge و Node.js)
في سياق Next.js، يشير نظام التشغيل (Runtime) إلى مجموعة المكتبات وواجهات البرمجة والوظائف العامة المتاحة لشفرة التطبيق أثناء التنفيذ.
على الخادم، هناك نظامان لتشغيل الأجزاء المختلفة من كود التطبيق:
- نظام تشغيل Node.js (الافتراضي) لديه إمكانية الوصول إلى جميع واجهات برمجة Node.js والحزم المتوافقة من النظام البيئي.
- نظام تشغيل Edge مبني على واجهات برمجة الويب (Web APIs).
الفروق بين أنظمة التشغيل
هناك العديد من الاعتبارات عند اختيار نظام التشغيل. يوضح هذا الجدول الفروق الرئيسية بلمحة سريعة. إذا كنت تريد تحليلًا أكثر تعمقًا للفروق، راجع الأقسام أدناه.
Node | Serverless | Edge | |
---|---|---|---|
الإقلاع البارد (Cold Boot) | / | عادي | منخفض |
بث HTTP | نعم | نعم | نعم |
الإدخال/الإخراج (IO) | الكل | الكل | fetch |
قابلية التوسع (Scalability) | / | عالية | الأعلى |
الأمان | عادي | عالي | عالي |
زمن الاستجابة (Latency) | عادي | منخفض | الأقل |
حزم npm | الكل | الكل | مجموعة أصغر |
التصيير الثابت | نعم | نعم | لا |
التصيير الديناميكي | نعم | نعم | نعم |
إعادة التحقق من البيانات مع fetch | نعم | نعم | نعم |
نظام تشغيل Edge
في Next.js، نظام تشغيل Edge الخفيف الوزن هو مجموعة فرعية من واجهات برمجة Node.js المتاحة.
نظام تشغيل Edge مثالي إذا كنت بحاجة إلى تقديم محتوى ديناميكي مخصص بزمن استجابة منخفض باستخدام دوال صغيرة وبسيطة. تأتي سرعة نظام تشغيل Edge من استخدامه الحد الأدنى من الموارد، ولكن هذا قد يكون مقيدًا في العديد من السيناريوهات.
على سبيل المثال، لا يمكن أن يتجاوز الكود المنفذ في نظام تشغيل Edge على Vercel بين 1 ميجابايت و4 ميجابايت، هذا الحد يشمل الحزم المستوردة والخطوط والملفات، وسيختلف اعتمادًا على بنية النشر الخاصة بك. بالإضافة إلى ذلك، لا يدعم نظام تشغيل Edge جميع واجهات برمجة Node.js مما يعني أن بعض حزم npm
قد لا تعمل. على سبيل المثال، "Module not found: Can't resolve 'fs'" أو أخطاء مماثلة. نوصي باستخدام نظام تشغيل Node.js إذا كنت بحاجة إلى استخدام هذه الواجهات أو الحزم.
نظام تشغيل Node.js
يوفر لك استخدام نظام تشغيل Node.js إمكانية الوصول إلى جميع واجهات برمجة Node.js، وجميع حزم npm التي تعتمد عليها. ومع ذلك، فإنه ليس سريعًا في البدء مثل المسارات التي تستخدم نظام تشغيل Edge.
سيحتاج نشر تطبيق Next.js على خادم Node.js إلى إدارة وتوسيع وتهيئة البنية التحتية الخاصة بك. بدلاً من ذلك، يمكنك التفكير في نشر تطبيق Next.js على منصة بدون خادم مثل Vercel، والتي ستعالج هذا نيابة عنك.
Node.js بدون خادم (Serverless)
الحل بدون خادم مثالي إذا كنت بحاجة إلى حل قابل للتوسع يمكنه التعامل مع أحمال حسابية أكثر تعقيدًا من نظام تشغيل Edge. مع دوال Serverless على Vercel، على سبيل المثال، يكون الحجم الإجمالي للشفرة 50 ميجابايت بما في ذلك الحزم المستوردة والخطوط والملفات.
الجانب السلبي مقارنة بالمسارات التي تستخدم Edge هو أن دوال Serverless قد تستغرق مئات الميلي ثانية للبدء قبل أن تبدأ في معالجة الطلبات. اعتمادًا على مقدار حركة المرور التي يتلقاها موقعك، قد يحدث هذا بشكل متكرر حيث أن الدوال ليست "دافئة" بشكل متكرر.
يرجى الرجوع إلى وثائق Node.js ووثائق Edge للحصول على القائمة الكاملة لواجهات البرمجة المتاحة. يمكن لكلا نظامي التشغيل أيضًا دعم البث (streaming) اعتمادًا على بنية النشر الخاصة بك.