Global Objects در Node.js: اشیاء سراسری و ابزارهای کاربردی

در Node.js مجموعه‌ای از اشیاء و متغیرهای سراسری وجود دارد که در همهٔ ماژول‌ها در دسترس هستند. برخی از این متغیرها مانند __dirname و __filename فقط در محدودهٔ ماژول‌های CommonJS معتبرند. علاوه بر این، کلاس‌ها و ابزارهایی مانند AbortController، Buffer، BroadcastChannel، fetch و localStorage به‌صورت سراسری در محیط Node.js قابل استفاده‌اند. این اشیاء ترکیبی از قابلیت‌های اختصاصی Node.js و APIهای سازگار با مرورگر هستند.

__dirname / __filename / exports / module / requireAbortController / AbortSignalBuffer / BlobBroadcastChannel / MessageChannel / MessagePortconsole / clearTimeout / clearInterval / clearImmediate

~3 دقیقه مطالعه · آخرین به‌روزرسانی ۸ دی ۱۴۰۴

1. متغیرهای CommonJS


این متغیرها فقط در محدودهٔ ماژول‌های CommonJS معتبرند:


  • __dirname: مسیر پوشهٔ جاری ماژول.
  • __filename: مسیر کامل فایل جاری.
  • exports: خروجی ماژول.
  • module: شیء ماژول جاری.
  • require(): برای وارد کردن ماژول‌ها.

2. AbortController و AbortSignal


ابزاری برای لغو عملیات Promise-based. متدهای مهم:


  • abort(): فعال‌سازی سیگنال لغو.
  • AbortSignal.abort(): ایجاد سیگنال لغو‌شده.
  • AbortSignal.timeout(): لغو پس از مدت مشخص.
  • AbortSignal.any(): ترکیب چند سیگنال.

3. Buffer و Blob


Buffer برای مدیریت داده‌های باینری استفاده می‌شود. Blob داده‌های فایل‌مانند را مدیریت می‌کند.


4. ابزارهای سازگار با مرورگر


  • BroadcastChannel: ارتباط بین کانال‌ها.
  • MessageChannel، MessagePort، MessageEvent: ارتباط بین نخ‌ها یا فرآیندها.
  • EventTarget و CustomEvent: مدیریت رویدادها.

5. توابع زمان‌بندی


  • clearTimeout()
  • clearInterval()
  • clearImmediate()

6. console


برای چاپ خروجی در stdout و stderr استفاده می‌شود.


7. fetch و کلاس‌های مرتبط


پیاده‌سازی سازگار با مرورگر برای درخواست‌های HTTP. کلاس‌های مرتبط:


  • FormData
  • Headers
  • Request
  • Response

8. global و globalThis


global شیء سراسری قدیمی است. globalThis جایگزین مدرن و استاندارد آن است.


9. localStorage


ذخیره‌سازی داده‌ها به‌صورت کلید-مقدار، مشابه مرورگر. محدودیت: ۱۰ مگابایت.


10. Navigator


پیاده‌سازی جزئی از API مرورگر. ویژگی مهم: navigator.hardwareConcurrency برای نمایش تعداد پردازنده‌های منطقی.


نتیجه‌گیری


اشیاء سراسری در Node.js ترکیبی از قابلیت‌های اختصاصی و APIهای سازگار با مرورگر هستند. استفادهٔ صحیح از این ابزارها باعث افزایش کارایی و ساده‌تر شدن توسعهٔ برنامه‌ها می‌شود.


1. ویژگی‌های navigator


  • navigator.language: زبان ترجیحی Node.js بر اساس ICU.
  • navigator.languages: آرایه‌ای از زبان‌های ترجیحی.
  • navigator.platform: پلتفرم جاری.
  • navigator.userAgent: نام و نسخهٔ Node.js.
  • navigator.locks: مدیریت قفل‌ها برای منابع مشترک.

2. Performance API


کلاس‌های PerformanceEntry، PerformanceMark، PerformanceMeasure و PerformanceObserver برای اندازه‌گیری و مانیتورینگ عملکرد استفاده می‌شوند. شیء performance از ماژول perf_hooks ارائه می‌شود.


3. process


شیء process اطلاعات و کنترل اجرای Node.js را فراهم می‌کند.


4. queueMicrotask()


یک microtask را در صف اجرا قرار می‌دهد. مشابه process.nextTick() اما توسط V8 مدیریت می‌شود.


5. Stream APIs


  • ReadableStream: جریان خواندن.
  • WritableStream: جریان نوشتن.
  • کلاس‌های مرتبط مانند ReadableStreamDefaultReader و WritableStreamDefaultWriter.

6. Storage APIs


  • sessionStorage: ذخیره‌سازی در حافظه با محدودیت ۱۰ مگابایت.
  • localStorage: ذخیره‌سازی دائمی در فایل.
  • Storage: پیاده‌سازی سازگار با مرورگر.

7. structuredClone()


متد استاندارد WHATWG برای کپی عمیق اشیاء.


8. Encoding و Decoding


  • TextEncoder و TextDecoder: رمزگذاری و رمزگشایی متن.
  • نسخه‌های Stream مانند TextEncoderStream و TextDecoderStream.

9. URL APIs


  • URL: کلاس استاندارد برای مدیریت آدرس‌ها.
  • URLSearchParams: مدیریت پارامترهای query.
  • URLPattern: الگوهای URL (آزمایشی).

10. WebAssembly و WebSocket


WebAssembly برای اجرای کدهای سطح پایین و WebSocket برای ارتباط بلادرنگ سازگار با مرورگر استفاده می‌شوند.


نتیجه‌گیری


Global Objects در Node.js ترکیبی از قابلیت‌های اختصاصی و APIهای سازگار با مرورگر هستند. این امکانات باعث می‌شوند توسعه‌دهندگان بتوانند هم در محیط سرور و هم در محیط‌های مشابه مرورگر از یک مجموعهٔ یکپارچهٔ ابزارها استفاده کنند.


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

مقالات مرتبط

آشنایی کامل با ماژول 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ها ارائه می‌دهد.

ادامه