قبول المدخلات من سطر الأوامر في Node.js
كيف تجعل برنامج Node.js لسطر الأوامر تفاعليًا؟
يوفر Node.js منذ الإصدار 7 وحدة readline لأداء هذا بالضبط: الحصول على الإدخال من دفق قابل للقراءة مثل دفق process.stdin
، والذي يكون أثناء تنفيذ برنامج Node.js هو إدخال المحطة الطرفية، سطرًا واحدًا في كل مرة.
const readline = require('node:readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("What's your name?", name => {
console.log('Hi ' + name + '!');
rl.close();
});
تطلب هذه القطعة من التعليمات البرمجي اسم المستخدم، وبمجرد إدخال النص واضغط المستخدم على Enter، نرسل تحية.
تُظهر طريقة question()
المعلمة الأولى (سؤال) وتنتظر إدخال المستخدم. تقوم باستدعاء دالة الاستدعاء مرة واحدة يتم الضغط على Enter.
في دالة الاستدعاء هذه، نقوم بإغلاق واجهة readline.
توفر readline
العديد من الطرق الأخرى، يرجى التحقق منها في وثائق الحزمة المرتبطة أعلاه.
إذا كنت بحاجة إلى طلب كلمة مرور، فمن الأفضل عدم عرضها مرة أخرى، ولكن بدلاً من ذلك عرض رمز *.
أبسط طريقة هي استخدام حزمة readline-sync وهي مشابهة جدًا من حيث واجهة برمجة التطبيقات وتتعامل مع هذا خارج الصندوق. يتم توفير حل أكثر اكتمالًا وتجريدًا بواسطة حزمة Inquirer.js.
يمكنك تثبيته باستخدام npm install inquirer
، ثم يمكنك تكرار التعليمات البرمجية أعلاه على النحو التالي:
const inquirer = require('inquirer');
const questions = [
{
type: 'input',
name: 'name',
message: "what's your name?"
}
];
inquirer.prompt(questions).then(answers => {
console.log('Hi ' + answers.name + '!');
});
يسمح لك Inquirer.js
بالقيام بالعديد من الأشياء مثل طرح اختيارات متعددة، ووجود أزرار اختيار، وتأكيدات، وأكثر من ذلك.
يجدر معرفة جميع البدائل، خاصةً تلك المدمجة التي يوفرها Node.js، ولكن إذا كنت تخطط لأخذ إدخال سطر الأوامر إلى المستوى التالي، فإن Inquirer.js
هو الخيار الأمثل.