~2 دقیقه مطالعه • بروزرسانی ۹ دی ۱۴۰۴
1. معرفی
ماژول repl با require('node:repl') بارگذاری میشود و کلاس REPLServer را ارائه میدهد. این کلاس ورودیها را دریافت، آنها را ارزیابی، و خروجی را چاپ میکند.
2. ویژگیها
- تکمیل خودکار ورودیها.
- ویرایش خط به سبک Emacs.
- پشتیبانی از ورودی چندخطی.
- جستجوی تاریخچه به سبک ZSH.
- ذخیره و بارگذاری وضعیت جلسه.
- پشتیبانی از ANSI رنگی.
3. دستورات ویژه
.break: توقف ورودی چندخطی..clear: پاکسازی context..exit: خروج از REPL..help: نمایش لیست دستورات..save: ذخیرهٔ جلسه در فایل..load: بارگذاری فایل در جلسه..editor: ورود به حالت ویرایشگر.
4. ارزیابی پیشفرض
بهطور پیشفرض، REPL کد جاوااسکریپت را اجرا کرده و به ماژولهای داخلی دسترسی میدهد. متغیرها در سطح global تعریف میشوند مگر اینکه در بلاک یا تابع باشند.
5. context و متغیرها
میتوان متغیرها را بهطور مستقیم در context اضافه کرد تا در REPL محلی باشند. همچنین امکان تعریف متغیرهای read-only با Object.defineProperty() وجود دارد.
6. مدیریت خطاها
- استفاده از
domainبرای مدیریت خطاهای بدون مدیریت. - متغیر
_برای آخرین نتیجه و_errorبرای آخرین خطا.
7. پشتیبانی از await
REPL از await در سطح بالا پشتیبانی میکند، اما محدودیتهایی مانند بازتعریف متغیرهای const وجود دارد.
8. دستورات سفارشی
با defineCommand() میتوان دستورات جدید با پیشوند "." تعریف کرد:
replServer.defineCommand('sayhello', {
help: 'Say hello',
action(name) {
console.log(`Hello, ${name}!`);
},
});
9. رویدادها
- exit: هنگام خروج از REPL.
- reset: هنگام پاکسازی context.
10. تاریخچه و تنظیمات
REPL تاریخچهٔ ورودیها را در فایل .node_repl_history ذخیره میکند. میتوان مسیر و اندازهٔ تاریخچه را با متغیرهای محیطی مانند NODE_REPL_HISTORY و NODE_REPL_HISTORY_SIZE تغییر داد.
11. نمونههای پیشرفته
- اجرای REPL روی سوکتهای TCP یا Unix.
- اجرای REPL روی HTTP با استفاده از curl.
نتیجهگیری
ماژول repl یکی از ابزارهای قدرتمند Node.js برای توسعه و دیباگ است. با قابلیتهای متنوعی مانند تکمیل خودکار، تاریخچه، پشتیبانی از await، و امکان تعریف دستورات سفارشی، REPL محیطی انعطافپذیر برای آزمایش و تعامل با کد فراهم میکند.
نوشته و پژوهش شده توسط دکتر شاهین صیامی