~2 دقیقه مطالعه • بروزرسانی ۹ دی ۱۴۰۴
1. معرفی
ماژول readline برای خواندن ورودی کاربر یا دادههای فایل بهصورت خطی استفاده میشود. میتوان آن را با require('node:readline') یا نسخهٔ Promise با require('node:readline/promises') بارگذاری کرد.
2. ساخت Interface
const readline = require('node:readline');
const { stdin: input, stdout: output } = require('node:process');
const rl = readline.createInterface({ input, output });
3. رویدادهای مهم
- line: هنگام دریافت یک خط ورودی.
- close: هنگام بسته شدن رابط.
- pause / resume: توقف و ادامهٔ جریان ورودی.
- SIGINT: دریافت Ctrl+C.
- SIGTSTP / SIGCONT: مدیریت ارسال پردازش به پسزمینه و بازگرداندن آن.
- history: تغییر در تاریخچهٔ ورودیها.
4. متدهای کلیدی
rl.question(query, callback): نمایش پرسش و دریافت پاسخ کاربر.rl.prompt(): نمایش prompt و انتظار برای ورودی.rl.setPrompt(prompt): تنظیم متن prompt.rl.getPrompt(): دریافت prompt فعلی.rl.write(data[, key]): نوشتن داده یا شبیهسازی ورودی کلید.rl.close(): بستن رابط.
5. استفاده از AsyncIterator
رابط readline از for await...of پشتیبانی میکند تا بتوان خطوط ورودی را بهصورت asynchronous پردازش کرد:
for await (const line of rl) {
console.log(`Received: ${line}`);
}
6. مثالها
- CLI ساده: ساخت رابط خط فرمان با دستورات سفارشی.
- خواندن فایل خطبهخط: استفاده از
fs.createReadStream()همراه با readline.
7. کلیدهای میانبر TTY
ماژول readline از کلیدهای میانبر مانند Ctrl+C، Ctrl+D، Ctrl+U، Ctrl+K برای مدیریت ورودی پشتیبانی میکند.
نتیجهگیری
ماژول readline ابزاری قدرتمند برای ساخت رابطهای تعاملی در Node.js است. با پشتیبانی از Promise و Callback، رویدادهای متنوع، و قابلیت پردازش فایلها بهصورت خطی، این ماژول یکی از ابزارهای کلیدی برای توسعهٔ برنامههای CLI و ابزارهای پردازش داده محسوب میشود.
نوشته و پژوهش شده توسط دکتر شاهین صیامی