كيفية استخدام Node.js REPL
أمر node
هو الأمر الذي نستخدمه لتشغيل نصوص Node.js الخاصة بنا:
node script.js
إذا قمنا بتشغيل أمر node
بدون أي نص للتنفيذ أو بدون أي وسيطات، فإننا نبدأ جلسة REPL:
node
ملاحظة
REPL تعني Read Evaluate Print Loop، وهي بيئة لغة برمجة (في الأساس نافذة وحدة تحكم) تأخذ تعبيرًا واحدًا كمدخل من المستخدم وتعيد النتيجة إلى وحدة التحكم بعد التنفيذ. توفر جلسة REPL طريقة ملائمة لاختبار كود JavaScript البسيط بسرعة.
إذا جربت ذلك الآن في محطتك الطرفية، فستحدث هذه الأمور:
> node
>
يبقى الأمر في وضع الخمول وينتظر منا إدخال شيء ما.
TIP
إذا لم تكن متأكدًا من كيفية فتح محطتك الطرفية، ابحث في جوجل عن "كيفية فتح محطة طرفية على نظام التشغيل الخاص بك".
ينتظر REPL منا إدخال بعض كود JavaScript، لكي نكون أكثر دقة.
ابدأ ببساطة وأدخل:
> console.log('test')
test
undefined
>
القيمة الأولى، test
، هي الإخراج الذي أمرنا وحدة التحكم بطباعته، ثم نحصل على undefined
وهي قيمة الإرجاع لتشغيل console.log()
. قرأ Node هذا السطر من الكود، وقيمه، وطبع النتيجة، ثم عاد إلى الانتظار لمزيد من أسطر الكود. سيقوم Node بالتكرار عبر هذه الخطوات الثلاث لكل جزء من الكود الذي نقوم بتنفيذه في REPL حتى نخرج من الجلسة. هذا هو المكان الذي حصل فيه REPL على اسمه.
يقوم Node بطباعة نتيجة أي سطر من كود JavaScript تلقائيًا دون الحاجة إلى توجيهه للقيام بذلك. على سبيل المثال، اكتب السطر التالي واضغط على Enter:
> 5==5
true
>
لاحظ الفرق في مخرجات السطرين أعلاه. قام Node REPL بطباعة undefined
بعد تنفيذ console.log()
. بينما من ناحية أخرى، قام فقط بطباعة نتيجة 5== '5'
. عليك أن تضع في اعتبارك أن الأول عبارة عن بيان في JavaScript فقط، والأخير عبارة عن تعبير.
في بعض الحالات، قد يحتاج الكود الذي تريد اختباره إلى أسطر متعددة. على سبيل المثال، لنفترض أنك تريد تعريف دالة تولد رقمًا عشوائيًا، في جلسة REPL اكتب السطر التالي واضغط على Enter:
function generateRandom()
...
يعتبر Node REPL ذكيًا بما يكفي لتحديد أنك لم تنتهِ من كتابة الكود الخاص بك بعد، وسيذهب إلى وضع متعدد الأسطر لتتمكن من كتابة المزيد من الكود. الآن أكمل تعريف دالتك واضغط على Enter:
function generateRandom()
...return Math.random()
المتغير الخاص:
إذا كتبت _
بعد بعض التعليمات البرمجية، فسيتم طباعة نتيجة العملية الأخيرة.
مفتاح السهم لأعلى:
إذا ضغطت على مفتاح السهم لأعلى، فستتمكن من الوصول إلى سجل أسطر التعليمات البرمجية السابقة التي تم تنفيذها في جلسة REPL الحالية، وحتى جلسات REPL السابقة.
أوامر النقطة
يحتوي REPL على بعض الأوامر الخاصة، كلها تبدأ بنقطة .
. وهي:
.help
: يعرض مساعدة أوامر النقطة..editor
: يمكّن وضع المحرر، لكتابة تعليمات برمجية JavaScript متعددة الأسطر بسهولة. بمجرد دخولك إلى هذا الوضع، أدخلctrl-D
لتشغيل التعليمات البرمجية التي كتبتها..break
: عند إدخال تعبير متعدد الأسطر، سيؤدي إدخال الأمر.break
إلى إيقاف المزيد من الإدخال. نفس الأمر عند الضغط علىctrl-C
..clear
: يعيد سياق REPL إلى كائن فارغ ويمسح أي تعبير متعدد الأسطر قيد الإدخال حاليًا..load
: يحمّل ملف JavaScript، بالنسبة إلى الدليل العامل الحالي..save
: يحفظ كل ما أدخلته في جلسة REPL إلى ملف (حدد اسم الملف)..exit
: يخرج من REPL (مثل الضغط علىctrl-C
مرتين).
يعرف REPL متى تقوم بكتابة بيان متعدد الأسطر دون الحاجة إلى استدعاء .editor
. على سبيل المثال، إذا بدأت في كتابة تكرار مثل هذا:
[1, 2,3].foxEach(num=>{
وقمت بالضغط على Enter، فسيتحول REPL إلى سطر جديد يبدأ بثلاث نقاط، مما يشير إلى أنه يمكنك الآن متابعة العمل على هذا الكتلة.
1... console.log (num)
2...}
إذا كتبت .break
في نهاية السطر، فسيتوقف الوضع متعدد الأسطر ولن يتم تنفيذ البيان.
تشغيل REPL من ملف JavaScript
يمكننا استيراد REPL في ملف JavaScript باستخدام repl
.
const repl = require('node:repl')
باستخدام المتغير repl
، يمكننا إجراء عمليات متنوعة. لبدء موجه أمر REPL، اكتب السطر التالي:
repl.start()
شغّل الملف في سطر الأوامر.
node repl.js
يمكنك تمرير سلسلة تُظهر عند بدء REPL. القيمة الافتراضية هي '>' (مع مسافة لاحقة)، ولكن يمكننا تعريف موجه مخصص.
// موجه على طراز يونكس
const local = repl.start('$ ')
يمكنك عرض رسالة أثناء الخروج من REPL
local.on('exit', () => {
console.log('exiting repl')
process.exit()
})
يمكنك قراءة المزيد حول وحدة REPL في وثائق REPL.