اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

بيئة Node.js تستخدم متغير تسمى NODE_ENV لتحديد البيئة التي يتم تشغيل التطبيق فيه، ويكون NODE_ENV إما "development" أو "production" أو test أو قيمة أخرى حسب ما تريده أنت.

ونستخدم قيمة NODE_ENV لتحديد سلوك التطبيق حسب البيئة، وذلك مفيد في عدة سيناريوهات، منها:

  •  تحديد إعدادات مختلفة لقواعد البيانات أو الاتصال بالخدمات أو أي إعدادات أخرى بناءًا على البيئة،  كاستخدام قاعدة بيانات مختلفة في الإنتاج مقارنة بالتطوير.
  • تحديد ما إذا كان التطبيق يعمل في وضع تطوير أو إنتاج، والاستفادة من تلك المعلومة لتحسين أداء التطبيق في وضع الإنتاج.
  • استخدامه في ملفات التكوين والكود لتشغيل الأكواد التصحيحية أو اختبار الوحدات عند تشغيل البرنامج في وضع اختبار.

والقيمة الشائعة لـ NODE_ENV هي "development" عندما يكون التطبيق قيد التطوير، و"production" عندما يكون في إنتاج، و"test" عند تشغيل اختبارات، وتستطيع تعيين قيمة NODE_ENV باستخدام الأمر في الطرفية:

//CMD
SET NODE_ENV=production

//PowerShell
$env:NODE_ENV="production"

أو في السكريبت التشغيلي:

"scripts": {
  "start": "NODE_ENV=production node app.js"
}

أو في ملف .env:

NODE_ENV=production

وإليك بعض الأمثلة على كيفية استخدام NODE_ENV والاستفادة منه:

تنفيذ أمر معين بناءًا بيئة التطوير:

// في بيئة التطوير
if (process.env.NODE_ENV === "development") {
  // تمكين التصحيح
  console.log("تطبيق التطوير");
}

// في بيئة الإنتاج
if (process.env.NODE_ENV === "production") {
  // تعطيل التصحيح
  console.log("تطبيق الإنتاج");
}

تغيير المنفذ مثلاً:

// تعيين اسم مضيف الخادم
const host = process.env.NODE_ENV === "production" ? "localhost" : "0.0.0.0";

أو تغيير الـ API:

// تعيين مزود API الخارجي
const provider = process.env.NODE_ENV === "production" ? "productionProvider" : "developmentProvider";

 

  • 0
نشر
بتاريخ On 23‏/11‏/2023 at 21:41 قال محمود سعداوي2:

السلام عليكم.

ماهو node envirement و ماهو الفرق بين production و developement

شكرا

وعليكم السلام،
بالإضافة إلى ما تحدث عنه الأستاذ مصطفى، سوف تعلم الفرق الحقيقي بين production و developement عند الدخول في سوق العمل فمعظم الشركة تعتمدان على بيئتين أو ثلاث في حال وجود مرحلة الاختبار

  • في حال developement هذه البيئة تكون مخصص للمطورين الموجودين في الشركة وتكون على سيرفر مستقل ومن الممكن أن تكون مشتركة مع بيئة الاختبار أو منفصلة عنها ولكن في الاغلب الاوقات تكون بيئة التطوير والاختبار على سيرفر واحد لتوفير التكاليف
  • في حال production هذه البيئة يتم فيها إطلاق المنتج النهائي للخدمة وتكون على سيرفر مستقل وفي حال قمنا بتسمية سيرفر فمن الممكن أن تكون على اكثر من سيرفر وهذه السيرفرات مربوطة في نظام واحد في حال تعطل احدها يستطيع الاخر الرد على المستخدم ولكن يطلق عليها كمجموعة سيرفر

وهنا تأتي فائدة node envirement حيث يوجد لكل بيئة متغيرات خاصة بها ونجد ذلك بشكل صريح في حال database، الاكيد أن database الخاصة ببيئة التطوير  developement  منفصلة عن بيئة الانتاج production من خلال اسم المستخدم كلمة السر وما إلى ذلك ولكن أنت لا تقوم بتعيين هذه القيم بشكل يدوي في كل مرة يتم وضع الكود فيها على بيئة التطوير والانتاج  تقوم بوضع هذه القيم في ملفين مثلا الاول الخاص بالتطوير developement  والاخر خاص بالانتاج production وتستطيع أن تضع في نفس الملف قيمة توضح على إي بيئة نعمل ثم عند وضع الكود في بيئة التطوير يقوم الكود بقراءة هذه القيم من الملف الخاص به باستخدام process.env وكذلك بالنسبة لبيئة الانتاج process.env وهذا يجعل مرحلة التطوير والانتاج اكثر عملية واقل تضيع للوقت

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...