الفرق بين المراجعتين ل"Node.js/repl"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:REPL}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:REPL}}</noinclude>
الاستقرار: 2-مستقر
+
الاستقرار: 2-مستقر  
  
 
تقدّم الوحدة repl تطبيق قراءة وتقييم وطباعة حلقة تكرار والذي يكون متوافرًا كبرنامج بحد ذاته (مستقل) أو مُتَضمّن في تطبيق آخر. يمكن الوصول إليه باستخدام:
 
تقدّم الوحدة repl تطبيق قراءة وتقييم وطباعة حلقة تكرار والذي يكون متوافرًا كبرنامج بحد ذاته (مستقل) أو مُتَضمّن في تطبيق آخر. يمكن الوصول إليه باستخدام:

مراجعة 13:51، 19 نوفمبر 2018

الاستقرار: 2-مستقر

تقدّم الوحدة repl تطبيق قراءة وتقييم وطباعة حلقة تكرار والذي يكون متوافرًا كبرنامج بحد ذاته (مستقل) أو مُتَضمّن في تطبيق آخر. يمكن الوصول إليه باستخدام:

التصميم والميزات

تُصدِّر الوحدة repl الصنف repl.REPLServer أثناء التنفيذ، سوف تقبل نسخ repl.REPLServer أسطرًا مفردةً من دخل المستخدم وتقيّمها تبعًا لدوال تقييم معرّفة من المستخدم ومن ثمّ تخرج الناتج. ربما يكون الدخل والخرج من stdin و stdout، على التوالي، ربما تكون متصلة بأي مجرى (stream) يتبع لبرمجية Node.js.

تدعم نُسخ repl.REPLServer الإكمال التلقائي للدخل، وتعديل سطري بنمط برمجية Emacs‏ (Emacs-style) البسيط، ودخل متعدد الأسطر، و خرج بأسلوب ANSI-styled، وحفظ واستعادة حالة جلسة REPL الحالية، وإصلاح الأخطاء، ودوال تقييم قابلة للتخصيص.

أوامر ومفاتيح خاصة

الأوامر الخاصة التالية مدعومة من قبل كل نُسخ  REPL:

  • ‎.break: في عملية إدخال تعبير متعدد الأسطر، سوف يوقف إدخال الأمر ‎.break (أو الضغط على مجموعة المفاتيح ‎<ctrl>‎-‎C‎) الدخل الإضافي أو معالجة ذاك التعبير.
  • ‎.clear: يعيد ضبط قيمة REPL context إلى كائن فارغ ويمسح أي تعابير متعددة الأسطر تُدخل حاليًا.
  • ‎.exit: يغلق مجرى الدخل/الخرج (I/O)، متسبّبًا بخروج REPL.
  • ‎.help: يظهر هذه القائمة من الأوامر الخاصة.
  • ‎.save: يحفظ جلسة REPL الحالية إلى ملف: ‎>‎ ‎.save ./file/to/save.js‎
  • ‎.load: يحمّل ملفًا إلى جلسة REPL الحالية. ‎> ‎.‎load ./file/to/load.js‎
  • ‎.editor: يدخل وضع التعديل (للانتهاء ‎<ctrl>‎-‎D‎، \وللإلغاء ‎<ctrl>‎-‎C)

يملك المزيج التالي من المفاتيح في REPL هذه التأثيرات الخاصة:

  • ‎<ctrl>‎‎-‎‎C‎: عندما تُضغط مرّة، فإنها تملك ذات التأثير كأمر ‎.break .عندما تُضغط مرّتين على سطر فارغ، تملك ذات تأثير أمر ‎.exit
  • ‎<ctrl>‎-‎D: تملك ذات تأثير أمر ‎.exit
  • ‎<tab>‎: عندما تُضغط على سطر فارغ، تعرض المتحولات العامة والمحلية (النطاق). عندما تُضغط أثناء ادخال دخل آخر، تعرض خيارات إكمال تلقائي ذات صلة.

التقييم الإفتراضي

بشكل افتراضي، تستخدم كل نسخ repl.REPLServer دالة تقييم والتي تقيّم تعابير JavaScript وتوفّر وصول إلى وحدات Node.js مُدمجة. يمكن أن يُعاد تعريف هذا السلوك الافتراضي بتمرير دالة تقييم بديلة عندما تُنشأ نسخة repl.REPLServer.

تعابير JavaScript

يدعم المقيّم الافتراضي تقييم مباشر لتعابير JavaScript:

إلّا إذا وسِّع من خلال كتل برمجية أو دوال، يُصرّح عن المتحولات المصرّح عنها في النطاق العام إما بشكل ضمني أو باستخدام الكلمات المفتاحية const أو let أو var.

النطاق العام والمحلي

يوفّر المقيّم الافتراضي وصولًا إلى أي متحول موجود في النطاق العام. من الممكن استخراج متحول إلى REPL بشكل صريح بإسناده إلى كائن context مترافق مع كل REPLServer:

تظهر الخاصيات في كائن context كمحلية ضمن REPL:

خاصيات السياق Context افتراضيًا ليست للقراءة-فقط، لتحديد قراءة-فقط على النطاق العام، يجب أن تُعرّف خاصيات السياق باستخدام Object.defineProperty()‎:

الوصول إلى نواة وحدات Node.js

سوف يحمّل المقيّم الافتراضي تلقائيًا الوحدات الأساسية في Node.js إلى بيئة REPL عندما تُستخدم. على سبيل المثال، إلّا إذا صرّح عنها كمتحولات عامة أو متحولات نطاق. سوف يُقيّم الدخل fs عند الطلب كما يلي ‎global.fs = require('fs')‎: