پلتفرم جاوا اسکریپت سمت سرور Node.js 19.0 موجود است

Node.js 19.0، پلتفرمی برای اجرای برنامه های شبکه در جاوا اسکریپت منتشر شد. Node.js 19 یک شعبه پشتیبانی معمولی است که به‌روزرسانی‌ها تا ژوئن 2023 در دسترس است. در روزهای آینده، تثبیت شعبه Node.js 18 به پایان می رسد که وضعیت LTS دریافت می کند و تا آوریل 2025 پشتیبانی می شود. تعمیر و نگهداری شاخه LTS قبلی Node.js 16.0 تا سپتامبر 2023 و سال قبل از آخرین شاخه LTS 14.0 تا آوریل 2023 ادامه خواهد داشت.

بهبودهای اصلی:

  • موتور V8 به نسخه 10.7 مورد استفاده در Chromium 107 به روز شده است. در میان تغییرات موتور نسبت به شاخه Node.js 18، پیاده سازی سومین نسخه از Intl.NumberFormat API ذکر شده است که توابع جدیدی با فرمت Range اضافه می کند. ()، formatRangeToParts() و selectRange()، گروه بندی مجموعه ها، گزینه های جدید برای گرد کردن و تنظیم دقیق، توانایی تفسیر رشته ها به عنوان اعداد اعشاری. وابستگی های شامل llhttp 8.1.0 و npm 8.19.2 نیز به روز شده اند.
  • یک فرمان آزمایشی "node -watch" با اجرای یک حالت تماشا پیشنهاد شده است که تضمین می کند که فرآیند هنگام تغییر فایل وارد شده مجدداً راه اندازی می شود (به عنوان مثال، اگر "node -watch index.js" اجرا شود، فرآیند انجام می شود. هنگامی که index.js تغییر می کند، به طور خودکار راه اندازی مجدد می شود).
  • برای تمام اتصالات HTTP/HTTPS خروجی، پشتیبانی از مکانیسم HTTP 1.1 Keep-Alive فعال است، که اتصال را برای مدت معینی باز می‌گذارد تا چندین درخواست HTTP را در یک اتصال پردازش کند. انتظار می رود Keep-Alive توان و عملکرد را بهبود بخشد. به طور پیش فرض، زمان باز بودن اتصال روی 5 ثانیه تنظیم شده است. پشتیبانی از تجزیه هدر HTTP Keep-Alive در پاسخ های سرور به پیاده سازی کلاینت HTTP اضافه شده است و قطع خودکار کلاینت های غیرفعال با استفاده از Keep-Alive به اجرای سرور HTTP Node.js اضافه شده است.
  • WebCrypto API به استثنای توابع با استفاده از الگوریتم‌های Ed25519، Ed448، X25519 و X448 به دسته پایدار منتقل شده است. برای دسترسی به ماژول WebCrypto اکنون می توانید از globalThis.crypto یا require('node:crypto').webcrypto استفاده کنید.
  • پشتیبانی از ابزارهای ردیابی DTrace، SystemTap و ETW (Event Tracing برای ویندوز) حذف شده است که به دلیل پیچیدگی نگهداری آن در صورت عدم وجود برنامه پشتیبانی مناسب، نگهداری آن نامناسب تلقی می شد.

پلت فرم Node.js می تواند هم برای نگهداری سرور برنامه های کاربردی وب و هم برای ایجاد برنامه های شبکه مشتری و سرور معمولی استفاده شود. برای گسترش کارایی اپلیکیشن ها برای Node.js، مجموعه بزرگی از ماژول ها تهیه شده است که در آن می توانید ماژول هایی با اجرای HTTP، SMTP، XMPP، DNS، FTP، IMAP، POP3 سرورها و کلاینت ها، ماژول هایی برای ادغام پیدا کنید. با چارچوب های مختلف وب، کنترل کننده های WebSocket و Ajax، رابط های DBMS (MySQL، PostgreSQL، SQLite، MongoDB)، موتورهای قالب، موتورهای CSS، پیاده سازی الگوریتم های رمزنگاری و سیستم های مجوز (OAuth)، تجزیه کننده های XML.

برای اطمینان از پردازش تعداد زیادی از درخواست‌های موازی، Node.js از یک مدل اجرای کد ناهمزمان مبتنی بر مدیریت رویداد غیرمسدود و تعریف کنترل‌کننده‌های برگشت تماس استفاده می‌کند. روش های پشتیبانی شده برای اتصالات چندگانه عبارتند از: epoll، kqueue، /dev/poll و select. برای مالتی پلکس کردن اتصال، از کتابخانه libuv استفاده می شود که یک افزونه برای libev در سیستم های یونیکس و IOCP در ویندوز است. کتابخانه libeio برای ایجاد یک Thread Pool استفاده می شود و c-ares برای انجام پرس و جوهای DNS در حالت غیر مسدود کننده یکپارچه شده است. تمام فراخوانی‌های سیستمی که باعث مسدود شدن می‌شوند در داخل thread pool اجرا می‌شوند و سپس مانند کنترل‌کننده‌های سیگنال، نتیجه کار خود را از طریق یک لوله (لوله) بدون نام به عقب منتقل می‌کنند. اجرای کد جاوا اسکریپت از طریق استفاده از موتور V8 توسعه یافته توسط گوگل ارائه می شود (علاوه بر این، مایکروسافت در حال توسعه نسخه Node.js با موتور Chakra-Core است).

Node.js در هسته خود شبیه به Perl AnyEvent، Ruby Event Machine، Python Twisted و پیاده سازی رویداد Tcl است، اما حلقه رویداد در Node.js از توسعه دهنده پنهان است و شبیه مدیریت رویداد در یک برنامه تحت وب در حال اجرا است. در مرورگر هنگام نوشتن برنامه های کاربردی برای node.js، به جای انجام "var result = db.query("select..");" باید ویژگی های برنامه نویسی مبتنی بر رویداد را در نظر بگیرید. با انتظار برای اتمام کار و پردازش بعدی نتایج، Node.js از اصل اجرای ناهمزمان استفاده می کند، یعنی. کد به "db.query("انتخاب.."، تابع (نتیجه) {result processing}) تبدیل می‌شود، که در آن کنترل فوراً به کد بعدی منتقل می‌شود و نتیجه پرس و جو با رسیدن داده‌ها پردازش می‌شود.

منبع: opennet.ru

اضافه کردن نظر