صورت گرفت رهایی node.js 14.0، پلتفرم هایی برای اجرای برنامه های شبکه در جاوا اسکریپت. Node.js 14.0 یک شاخه پشتیبانی طولانی مدت است، اما این وضعیت تنها در ماه اکتبر، پس از تثبیت، اختصاص داده می شود. Node.js 14.0 پشتیبانی خواهد شد انجام شده تا آوریل 2023. تعمیر و نگهداری شاخه LTS قبلی Node.js 12.0 تا آوریل 2022 و سال قبل از آخرین شاخه LTS 10.0 تا آوریل 2021 ادامه خواهد داشت. پشتیبانی از شعبه استیج 13.x در ژوئن سال جاری به پایان می رسد.
توانایی تولید در پرواز یا هنگام وقوع رویدادهای خاص تثبیت شده است گزارش های تشخیصی، که رویدادهایی را نمایش می دهد که به تشخیص مشکلاتی مانند خرابی، کاهش عملکرد، نشت حافظه، بار زیاد CPU، خروجی خطای غیرمنتظره و غیره کمک می کند.
پشتیبانی آزمایشی API اضافه شد ذخیرهسازی محلی غیر همگامسازی با پیاده سازی کلاس AsyncLocalStorage، که می تواند برای ایجاد حالت ناهمزمان با کنترل کننده ها بر اساس تماس ها و وعده های برگشتی استفاده شود. AsyncLocalStorage به شما این امکان را میدهد که دادهها را در حین پردازش درخواست وب ذخیره کنید، که یادآور ذخیرهسازی محلی رشتهای در زبانهای دیگر است.
پیام هشدار درباره ویژگی آزمایشی هنگام بارگیری حذف شد ماژول هاECMAScript 6 با استفاده از بیانیه های واردات و صادرات متصل و صادر می شود. در عین حال، پیادهسازی ماژولهای ESM همچنان آزمایشی است.
موتور V8 به نسخه به روز شد 8.1 (1, 2, 3) که شامل بهینه سازی های جدید عملکرد و ویژگی هایی مانند عملگر جدید الحاق منطقی "??" (اگر عملوند سمت چپ NULL یا تعریف نشده باشد، عملوند سمت راست را برمی گرداند، و بالعکس)، عملگر "?." برای بررسی یکباره کل زنجیره خصوصیات یا تماسها (به عنوان مثال، "db?.user?.name?.length" بدون بررسی اولیه)، روش Intl.DisplayName برای به دست آوردن نامهای محلی و غیره.
بازنگری در Streams API با هدف بهبود سازگاری Streams API و حذف تفاوتها در رفتار بخشهای اصلی Node.js انجام شد. برای مثال، رفتار http.OutgoingMessage نزدیک به stream.Writable است و net.Socket شبیه به stream.Duplex است. گزینه autoDestroy به طور پیش فرض روی "true" تنظیم شده است که به معنای فراخوانی "_destroy" پس از اتمام است.
پشتیبانی آزمایشی API اضافه شد آیا من بودم (رابط سیستم WebAssembly، ارائه رابط های نرم افزاری برای تعامل مستقیم با سیستم عامل (POSIX API برای کار با فایل ها، سوکت ها و غیره).
به یاد بیاوریم که پلتفرم 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 میشود. این کتابخانه برای اتصالات چندگانه استفاده می شود لیبوو، که یک روبنا است لیبو در سیستم های یونیکس و بیش از IOCP در ویندوز. یک کتابخانه برای ایجاد یک Thread Pool استفاده می شود لیبیو، برای انجام پرس و جوهای DNS در حالت غیر مسدود کننده یکپارچه شده است c-ares. تمام فراخوانیهای سیستمی که باعث مسدود شدن میشوند، در داخل thread pool اجرا میشوند و سپس، مانند کنترلکنندههای سیگنال، نتیجه کار خود را از طریق یک لوله بدون نام ارسال میکنند. اجرای کد جاوا اسکریپت با استفاده از موتور توسعه یافته توسط گوگل تضمین می شود V8 (علاوه بر این، مایکروسافت در حال توسعه نسخه Node.js با موتور Chakra-Core است).
Node.js در هسته خود شبیه به فریمورک ها است Perl AnyEvent, ماشین رویداد روبی, Python Twisted и پیاده سازی رویدادها در Tcl، اما حلقه رویداد در Node.js از برنامهنویس پنهان است و شبیه مدیریت رویداد در یک برنامه وب است که در مرورگر اجرا میشود. هنگام نوشتن برنامههای کاربردی برای node.js، بهعنوان مثال، بهجای انجام «var result = db.query («انتخاب.»)»، باید ویژگیهای برنامهنویسی مبتنی بر رویداد را در نظر گرفت. با انتظار برای اتمام کار و پردازش بعدی نتایج، Node.js از اصل اجرای ناهمزمان استفاده می کند، یعنی. کد به "db.query("انتخاب.."، تابع (نتیجه) {result processing}) تبدیل میشود، که در آن کنترل بلافاصله به کد بعدی منتقل میشود، و نتیجه پرس و جو با رسیدن دادهها پردازش میشود. .