Node.js 16.0 منتشر شد، یک پلتفرم برای اجرای برنامه های شبکه در جاوا اسکریپت. Node.js 16.0 به عنوان یک شاخه پشتیبانی بلند مدت طبقه بندی می شود، اما این وضعیت تنها در ماه اکتبر، پس از تثبیت، اختصاص داده می شود. Node.js 16.0 تا آوریل 2023 پشتیبانی خواهد شد. تعمیر و نگهداری شاخه LTS قبلی Node.js 14.0 تا آوریل 2023 و سال قبل از آخرین شاخه LTS 12.0 تا آوریل 2022 ادامه خواهد داشت. پشتیبانی از شعبه 10.0 LTS تا 10 روز دیگر قطع خواهد شد.
بهبودهای اصلی:
- موتور V8 به نسخه 9.0 بهروزرسانی شده است (Node.js 15 از نسخه 8.6 استفاده میکند)، که امکان پیادهسازی ویژگیهایی مانند ویژگی «شاخصها» را برای عبارات منظم (شامل آرایهای با موقعیتهای شروع و پایان گروههای منطبقها) فراهم میکند. ، متد Atomics در Node.js 16 .waitAsync (نسخه غیرهمگام Atomics.wait)، پشتیبانی از استفاده از کلمه کلیدی await در ماژول های سطح بالا. فراخوانی تابع در شرایطی تسریع شده است که تعداد آرگومان های ارسال شده با پارامترهای تعریف شده در تابع مطابقت ندارد.
- Timers Promises API تثبیت شده است و مجموعهای از توابع جایگزین برای کار با تایمرهایی ارائه میکند که اشیاء Promise را به عنوان خروجی برمیگردانند، که نیاز به استفاده از util.promisify() را برطرف میکند. وارد کردن { setTimeout } از 'timers/promises'; تابع async run() { await setTimeout(5000); console.log('Hello, World!'); } اجرا کن()؛
- یک پیادهسازی آزمایشی از Web Crypto API اضافه شده است که برای انجام عملیات رمزنگاری اساسی در کنار برنامههای وب، مانند دستکاری هشهای رمزنگاری، تولید و تأیید امضای دیجیتال، رمزگذاری و رمزگشایی دادهها با استفاده از روشهای مختلف رمزگذاری، و ایجاد امنیت رمزنگاری طراحی شده است. اعداد تصادفی API همچنین توابعی را برای تولید و مدیریت کلیدها فراهم می کند.
- N-API (API برای توسعه افزونه ها) به نسخه 8 به روز شده است.
- انتقال به نسخه جدید مدیریت بسته NPM 7.10 انجام شده است.
- اجرای کلاس AbortController را که مبتنی بر API Web AbortController است و امکان لغو سیگنالها را در APIهای مبتنی بر Promise انتخاب شده، تثبیت کرد.
- پشتیبانی از نسخه سوم فرمت Source Map که برای مقایسه ماژول های تولید شده، پردازش شده یا بسته بندی شده با کد منبع اصلی استفاده می شود، تثبیت شده است.
- برای سازگاری با APIهای وب قدیمی، متدهای buffer.atob(data) و buffer.btoa(data) اضافه شده اند.
- تشکیل مونتاژ برای دستگاه های جدید اپل مجهز به تراشه M1 ARM آغاز شده است.
- در پلتفرم لینوکس، الزامات نسخه کامپایلر به GCC 8.3 افزایش یافته است.
به یاد بیاوریم که پلتفرم 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}) تبدیل میشود، که در آن کنترل فوراً به کد بعدی منتقل میشود و نتیجه پرس و جو با رسیدن دادهها پردازش میشود.
علاوه بر این، می توان اشاره کرد که شرکت Deno که توسط خالق Node.js برای توسعه پلتفرم نسل بعدی Deno تأسیس شد، 4.9 میلیون دلار سرمایه گذاری دریافت کرد. Deno در هدف خود شبیه به Node.js است، اما سعی می کند خطاهای مفهومی ایجاد شده در معماری Node.js را حذف کند و محیط امن تری را در اختیار کاربران قرار دهد. خاطرنشان می شود که راه حل های تجاری Deno بر روی محصولات کاملاً باز ساخته خواهد شد و مدل Open Core با عملکرد جداگانه پولی برای پلت فرم Deno غیرقابل قبول تلقی می شود.
منبع: opennet.ru