
Node.js یک محیط اجرایی (Runtime Environment) متنباز است که به توسعهدهندگان اجازه میدهد کدهای جاوا اسکریپت را در خارج از مرورگر (سمت سرور) اجرا کنند. این پلتفرم از معماری رویدادمحور و غیرمسدودکننده (Non-blocking I/O) استفاده میکند که آن را برای ساخت برنامههای تحت شبکه سریع و بسیار مقیاسپذیر، مانند سرورهای وب و APIهای بلادرنگ، ایدهآل میسازد.
در Node.js برخی APIها به دلایل مختلف منسوخ (Deprecated) میشوند؛ از جمله ناامن بودن، وجود جایگزین بهتر، یا تغییرات شکسته در نسخههای آینده. این منسوخسازیها به چهار دسته تقسیم میشوند:
ماژول node:diagnostics_channel در Node.js یک API برای ایجاد کانالهای نامگذاریشده فراهم میکند تا دادههای تشخیصی بهصورت پیام گزارش شوند. این قابلیت به توسعهدهندگان اجازه میدهد جریان اجرای برنامه را ردیابی کرده و اطلاعاتی مانند شروع و پایان عملیات، خطاها، و دادههای مرتبط را بهصورت ساختاریافته منتشر کنند.
ماژول node:dns در Node.js قابلیتهای مربوط به نامگذاری (Name Resolution) را فراهم میکند. این ماژول به توسعهدهندگان اجازه میدهد آدرسهای IP مربوط به نامهای دامنه را پیدا کنند و درخواستهای DNS را اجرا نمایند. در حالی که تابع dns.lookup() از امکانات سیستمعامل برای نامگذاری استفاده میکند (و ممکن است ارتباط شبکهای واقعی برقرار نکند)، سایر توابع مانند dns.resolve4() یا dns.reverse() مستقیماً به سرورهای DNS متصل میشوند. همچنین کلاس dns.Resolver امکان ایجاد Resolverهای مستقل با تنظیمات سفارشی را فراهم میکند.
ماژول node:domain در Node.js ابزاری برای مدیریت خطاها در عملیاتهای ورودی/خروجی (IO) و گروهبندی آنهاست. این ماژول به توسعهدهندگان اجازه میدهد خطاهای رخداده در EventEmitterها یا Callbackها را بهجای خروج ناگهانی برنامه، در یک دامنهٔ مشخص مدیریت کنند. با وجود این، ماژول Domain منسوخ شده و استفاده از آن توصیه نمیشود؛ در آینده باید به راهکارهای جایگزین مهاجرت کرد.
متغیرهای محیطی مقادیری هستند که به محیط اجرای فرآیند Node.js مرتبطاند. این متغیرها برای پیکربندی رفتار برنامه، مدیریت مقادیر حساس (مانند کلیدها و رمزها)، و تعریف گزینههای زمان اجرا استفاده میشوند. Node.js APIهای داخلی برای تعامل با متغیرهای محیطی فراهم کرده و فایلهای .env نیز روشی رایج برای مدیریت آنها بهشکل ساختاریافته هستند.
Applications running in Node.js encounter different categories of errors: standard JavaScript errors, DOMExceptions, system errors, assertion errors, and user-defined errors. Node.js provides multiple mechanisms for propagating and handling these errors depending on whether the API is synchronous, asynchronous with callbacks, or asynchronous with Promises. Understanding these mechanisms is essential for building resilient applications.
بخش بزرگی از API اصلی Node.js بر پایهٔ معماری رویدادمحور و غیرهمزمان ساخته شده است. در این معماری، اشیائی به نام EventEmitter رویدادهایی را منتشر میکنند و توابعی به نام Listener به این رویدادها واکنش نشان میدهند. این الگو امکان مدیریت کارآمد عملیاتهای ورودی/خروجی و جریان دادهها را فراهم میکند.
ماژول node:fs در Node.js امکان تعامل با سیستم فایل را فراهم میکند. این ماژول بر اساس توابع استاندارد POSIX طراحی شده و سه شکل اصلی برای عملیاتها ارائه میدهد: Promise-based، Callback-based و Synchronous. هرکدام بسته به نیازهای عملکردی و معماری برنامه کاربرد خاص خود را دارند.
در Node.js مجموعهای از اشیاء و متغیرهای سراسری وجود دارد که در همهٔ ماژولها در دسترس هستند. برخی از این متغیرها مانند __dirname و __filename فقط در محدودهٔ ماژولهای CommonJS معتبرند. علاوه بر این، کلاسها و ابزارهایی مانند AbortController، Buffer، BroadcastChannel، fetch و localStorage بهصورت سراسری در محیط Node.js قابل استفادهاند. این اشیاء ترکیبی از قابلیتهای اختصاصی Node.js و APIهای سازگار با مرورگر هستند.
ماژول http در Node.js هم کلاینت و هم سرور HTTP را پیادهسازی میکند. این ماژول برای مدیریت جریان دادهها و پارس پیامها طراحی شده و برخلاف بسیاری از کتابخانهها، کل درخواست یا پاسخ را بافر نمیکند. این ویژگی امکان کار با پیامهای بزرگ یا chunk-encoded را فراهم میکند. ماژول HTTP سطح پایین است و تنها مسئول مدیریت جریان و پارس اولیهٔ پیامهاست، نه تفسیر محتوای هدرها یا بدنه.
ماژول node:http2 در Node.js پیادهسازی پایدار پروتکل HTTP/2 را فراهم میکند. برخلاف API مربوط به HTTP/1، API اصلی HTTP/2 بهطور ویژه برای ویژگیهای این پروتکل طراحی شده است؛ مثل جریانهای چندگانه (multiplexed streams)، قابلیت server push و کنترل جریان پیشرفته. این API طراحی متقارن بین کلاینت و سرور دارد و رویدادهایی مانند stream، error و connect در هر دو سمت قابل استفاده هستند. برای سازگاری با مرورگرها باید از سرور امن (http2.createSecureServer) استفاده کرد و کلاینتها میتوانند با http2.connect متصل شوند.
ماژول node:https در Node.js پیادهسازی پروتکل HTTP روی TLS/SSL است. این ماژول امکان ایجاد سرورهای امن، مدیریت اتصالهای رمزگذاریشده، و ارسال درخواستهای HTTPS را فراهم میکند. توسعهدهندگان میتوانند با استفاده از گواهیهای TLS ارتباطات امن برقرار کنند، از قابلیتهایی مانند Agent برای مدیریت اتصالها بهره ببرند، و درخواستهای کلاینت را با امنیت بالا ارسال کنند.