ماژول REPL در Node.js

ماژول repl در Node.js یک محیط تعاملی Read-Eval-Print-Loop فراهم می‌کند که هم به‌صورت مستقل و هم درون برنامه‌ها قابل استفاده است. این محیط به توسعه‌دهندگان امکان می‌دهد کد جاوااسکریپت را خط‌به‌خط اجرا کنند، نتایج را مشاهده کنند، و با متغیرها و ماژول‌های داخلی تعامل داشته باشند. REPL از امکاناتی مانند تکمیل خودکار، تاریخچهٔ ورودی، و تعریف دستورات سفارشی پشتیبانی می‌کند.

repl.REPLServerSpecial commands (.break, .clear, .exit, .help, .save, .load, .editor)Events: exit, resetContext and global variables

~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 محیطی انعطاف‌پذیر برای آزمایش و تعامل با کد فراهم می‌کند.


نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

آشنایی کامل با ماژول Cluster در Node.js و نحوه افزایش مقیاس‌پذیری سرور

ماژول Cluster در Node.js به توسعه‌دهندگان اجازه می‌دهد چندین پردازش همزمان ایجاد کنند که یک پورت سرور را به اشتراک می‌گذارند. این کار باعث استفاده بهتر از هسته‌های CPU و افزایش توان پردازش برنامه می‌شود. در این مقاله نحوه کار Cluster، مدیریت Workerها، تنظیمات مهم و مثال عملی را بررسی می‌کنیم.

ادامه

راهنمای جامع ماژول VM در Node.js (ماژول node:vm)

ماژول node:vm امکان کامپایل و اجرای کد جاوااسکریپت در کانتکست‌های ایزولهٔ V8 را فراهم می‌کند. این کانتکست‌ها مانند یک «سندباکس سبک» داخل برنامهٔ Node.js عمل می‌کنند و هرکدام globalThis مخصوص خود را دارند. این ماژول برای اجرای پویا، موتورهای قالب (Template Engines)، سیستم‌های افزونه (Plugin Systems)، REPLها و تست ایزولهٔ منطق بسیار مناسب است. اما نکتهٔ بسیار مهم: vm یک ابزار امنیتی نیست و نباید برای اجرای کدهای غیرقابل‌اعتماد استفاده شود.

ادامه

راهنمای جامع ماژول V8 در Node.js (ماژول node:v8)

راهنمای جامع ماژول V8 در Node.js (ماژول node:v8)

ادامه

راهنمای جامع Worker Threads در Node.js (ماژول node:worker_threads)

ماژول node:worker_threads امکان اجرای واقعی چندریسمانی (Multithreading) را در Node.js فراهم می‌کند. برخلاف مدل تک‌ریسمانی سنتی Node.js، Worker Threads اجازه می‌دهند کارهای سنگین CPU در ریسه‌های جداگانه اجرا شوند بدون اینکه حلقهٔ رویداد (Event Loop) مسدود شود. این ماژول از حافظهٔ اشتراکی، انتقال بدون کپی (Zero‑Copy)، کانال‌های پیام، Worker Pool، محدودیت منابع و ابزارهای همگام‌سازی پیشرفته پشتیبانی می‌کند. Worker Threads برای پردازش‌های محاسباتی سنگین ایده‌آل هستند، در حالی که I/O همچنان باید توسط ریسهٔ اصلی مدیریت شود.

ادامه

راهنمای جامع ماژول util در Node.js

ماژول node:util مجموعه‌ای از توابع کمکی قدرتمند برای استفاده در هستهٔ Node.js و همچنین توسعهٔ برنامه‌ها ارائه می‌دهد. این ماژول ابزارهایی برای دیباگ، بازرسی اشیا، تبدیل Callback ↔ Promise، قالب‌بندی رشته‌ها، بررسی انواع، مدیریت خطاها، رمزگذاری متن، پردازش MIME، پارس آرگومان‌های CLI، سیگنال‌های Abort، و ابزارهای متفرقه فراهم می‌کند. این ماژول یکی از جعبه‌ابزارهای اصلی و ضروری برای توسعه‌دهندگان Node.js است.

ادامه

راهنمای جامع ماژول URL در Node.js

ماژول node:url ابزارهایی برای تحلیل، ساخت، و دست‌کاری URLها در Node.js فراهم می‌کند. Node.js دو API برای کار با URL دارد: WHATWG URL API — استاندارد مدرن و سازگار با مرورگرها (توصیه‌شده). Legacy API — API قدیمی Node.js (غیرتوصیه‌شده). WHATWG URL API یک رابط تمیز، سازگار و قدرتمند برای کار با اجزای URL، پارامترهای query، الگوهای URL و حتی Blob URLها ارائه می‌دهد.

ادامه