راهنمای جامع ماژول 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ها ارائه می‌دهد.

WHATWG URLLegacy url.parseURLSearchParamsURLPattern

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

1. معرفی


ماژول node:url امکان تحلیل و ساخت URLها را فراهم می‌کند. Node.js هم API قدیمی و هم API مدرن WHATWG را پشتیبانی می‌کند.


2. URL String و URL Object


یک URL شامل بخش‌هایی مانند پروتکل، hostname، پورت، مسیر، query و hash است. با parse کردن URL، یک شیء ساختاریافته دریافت می‌کنیم.


3. مقایسه WHATWG و Legacy


  • WHATWG URLnew URL() (استاندارد و توصیه‌شده)
  • Legacy APIurl.parse() (قدیمی)

مثال WHATWG:

const myURL = new URL('https://user:[email protected]:8080/path?query=1#hash');

مثال Legacy:

const url = require('node:url');
const myURL = url.parse('https://user:[email protected]:8080/path?query=1#hash');

4. ساخت URL


می‌توان URL را با setterها یا template literal ساخت:

const myURL = new URL('https://example.org');
myURL.pathname = '/a/b';
myURL.search = '?x=1';
myURL.hash = '#top';

5. سازنده WHATWG URL


ورودی می‌تواند نسبی یا مطلق باشد. ورودی‌های نسبی نیاز به base دارند.

new URL('/foo', 'https://example.org/');

پشتیبانی از Unicode و Punycode

new URL('https://測試'); // → https://xn--g6w251d/

6. ویژگی‌های URL


6.1 url.hash

بخش fragment (#...)

6.2 url.host

hostname + port

6.3 url.hostname

فقط hostname

6.4 url.href

رشتهٔ کامل URL

6.5 url.origin

پروتکل + host

6.6 url.username / url.password

اطلاعات احراز هویت

6.7 url.pathname

مسیر URL

6.8 url.port

پورت (۰ تا ۶۵۵۳۵)

6.9 url.protocol

پروتکل (http:, https:, ftp:, ...)

پروتکل‌های Special

فقط پروتکل‌های ftp، file، http، https، ws، wss «special» هستند.


7. url.search و url.searchParams


url.search رشتهٔ query است. url.searchParams یک API ساختاریافته برای مدیریت پارامترهاست.

مثال:

myURL.searchParams.get('id');
myURL.searchParams.append('key', 'value');
myURL.searchParams.delete('id');
myURL.searchParams.set('a', 'b');

8. API کلاس URLSearchParams


سازنده‌ها:

  • new URLSearchParams()
  • new URLSearchParams('a=b&c=d')
  • new URLSearchParams({ a: 'b' })
  • new URLSearchParams([['a','b']])

متدهای مهم:

  • append()
  • delete()
  • get()
  • getAll()
  • has()
  • set()
  • sort()

9. Blob Object URLs


Node.js امکان ساخت URLهای blob:nodedata را فراهم می‌کند:

const id = URL.createObjectURL(blob);
const restored = resolveObjectURL(id);
URL.revokeObjectURL(id);

10. URL.canParse()


برای بررسی معتبر بودن URL بدون پرتاب خطا:

URL.canParse('/foo', 'https://example.org/'); // true

11. URL.parse()


نسخهٔ امن‌تر که در صورت نامعتبر بودن، null برمی‌گرداند.


12. URLPattern API


API جدید و آزمایشی برای match کردن URLها.

مثال:

const pattern = new URLPattern('https://site.com/docs/*.html');
pattern.test('https://site.com/docs/api.html'); // true

نتیجه‌گیری


ماژول node:url یک سیستم قدرتمند و استاندارد برای تحلیل و ساخت URLها در Node.js ارائه می‌دهد. WHATWG URL API روش مدرن و سازگار با مرورگرهاست و باید در تمام پروژه‌های جدید استفاده شود. با امکاناتی مانند URLSearchParams، Blob URLs، URLPattern و پشتیبانی از Punycode، Node.js مجموعه‌ای کامل برای کار با URLها فراهم می‌کند.


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

مقالات مرتبط

آشنایی کامل با ماژول 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 است.

ادامه

Comprehensive Guide to UDP/Datagram Sockets in Node.js

The node:dgram module provides a full implementation of UDP (User Datagram Protocol) sockets in Node.js. . UDP is a lightweight, connectionless protocol ideal for real‑time applications such as VoIP, gaming, telemetry, IoT, and multicast/broadcast systems. This module exposes APIs for creating sockets, sending and receiving datagrams, joining multicast groups, managing buffer sizes, and controlling low‑level socket behavior.

ادامه