نسخة ECMAScript 2015 (ES6) و ما بعدها
تم بناء الـ Node.js باستعمال نسخ حديثة من الـ V8، وهذا يضمن إتاحة آخر المميزات الخاصة بالجافاسكريبت والموافقة لـ مواصفات JavaScript ECMA-262 للمطورين في الوقت المناسب، إضافة إلى التحسينات المستمرة في الأداء والثبات.
تقسم مميزات الـ ECMAScript 2015 (ES6) إلى ثلاثة مجموعات: المميزات التي تم شحنها والمميزات التي سيتم شحنها والمميزات قيد التقدم حيث:
- أن كافة المميزات التي تم شحنها، والتي يعتبرها الـ V8 ثابتة يتم تشغيلها تلقائيا على الـ Node.js ولا تتطلب أي نوع من الإعلام في وقت التشغيل.
- أن المميزات التي سيتم شحنها والتي هي مميزات مكتملة تقريبا ولكنها لا تعتبر ثابتة حسب فريق تطوير الـ V8 تتطلب علما في وقت التشغيل لاستعمالها:
--harmony
- أن المميزات قيد التقدم يمكن تشغيلها فرديا عبر العلم الخاص بها، رغم أن هذا الأمر منصوح بشدة تجنبه إلا لأغراض الاختبار. ملاحظة: هذه الأعلام معرفة من قبل الـ V8 ومن الممكن لها أن تتغير دون إشعار بذلك.
أي من المميزات تشحن مع أي نسخة من الـ Node.js افتراضيا ؟
يوفر موقع node.green نظرة عامة ممتازة حول مميزات الـ ECMAScript المدعومة في مختلف نسخ الـ Node.js بناء على جدول كانغاكس.
أي من المميزات هي قيد التقدم ؟
تتم إضافة مميزات جديدة للـ V8 دوريا، وعموما يتوقع وصول هذه المميزات إلى الـ Node.js على الرغم من أن التوقيت يبقى غير معلوم.
يمكنك الاطلاع على هذه المميزات التي هي قيد التقدم في كل نسخة من نسخ الـ Node.js عبر استعمال الأمر grep
مع --v8-options
وتجدر الأشارة إلى أن هذه المميزات غير مكتملة وقد تتعطل، لذلك فإن استعمالها يقع على مسؤوليتك الخاصة:
node --v8-options | grep "in progress"
--harmony
. هل يجب علي إلغاء ذلك؟
لقد قمت بإعداد بنيتي التحتية للاستفادة من علم إن السلوك الحالي لعلم --harmony
هو تمكين المميزات التي سيتم شحنها فقط. ففي نهاية المطاف هي تعتبر مرادفاً لـ --es_staging
، وكما ذكر مسبقا فإن هذه الميزات تعتبر كاملة ولكن غير ثابتة بعد. إذا أردت أن يتم ذلك بأمان، خصوصا في بيئة إنتاجية فيجب عليك أن تأخذ بعين الاعتبار حذف هذا العلم حتى يتم شحن تلك الميزات افتراضيا مع الـ V8، ومن ثم مع الـ Node.js. إذا أبقيت على هذه الميزات مفعلة، فيجب أن تتوقع تَوَقُف شيفرتك عن العمل في ترقيات قادمة من الـ Node.js إذا غير الـ V8 من مسمياتهم لاتباع المعايير أكثر.
كيف يمكنني معرفة أي نسخة من الـ V8 يتم تضمينها مع نسخة معينة من الـ Node.js ؟
يوفر الـ Node.js طريقة سهلة لسرد كافة الاعتمادات والنسخ التي يتم تضمينها مع ملف ثنائي محدد عبر الكائن العام process
. في حالة محرك الـ V8، بكتابة الأمر التالي في الطرفية لمعرفة نسخته:
node -p process.versions.v8