שוחרר Node.js 19.0, פלטפורמה להפעלת יישומי רשת ב-JavaScript. 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, אשר מוסיפה פונקציות חדשות formatRange (), formatRangeToParts() ו- selectRange(), קיבוץ סטים, אפשרויות חדשות לעיגול ודיוק הגדרה, היכולת לפרש מחרוזות כמספרים עשרוניים. גם התלות הכלולה llhttp 8.1.0 ו-npm 8.19.2 עודכנו.
- הוצעה פקודת "node -watch" ניסיונית המיישמת מצב שעון המבטיח שהתהליך יופעל מחדש כאשר הקובץ המיובא משתנה (לדוגמה, אם "node -watch index.js" מופעל, התהליך יופעל מחדש באופן אוטומטי כאשר index.js משתנה).
- תמיכה במנגנון Keep-Alive של HTTP 1.1, אשר משאיר חיבור פתוח למשך זמן מוגדר כדי לעבד בקשות HTTP מרובות בתוך חיבור יחיד, מופעלת כעת עבור כל חיבורי ה-HTTP/HTTPS היוצאים. Keep-Alive צפוי לשפר את התפוקה והביצועים. זמן הקצוב המוגדר כברירת מחדל ל-keep-Alive של החיבור מוגדר ל-5 שניות. תמיכה בניתוח כותרת ה-HTTP Keep-Alive בתגובות נוספה ליישום לקוח ה-HTTP. שרת, ויישום שרת ה-HTTP של Node.js עודכן כדי לנתק אוטומטית לקוחות לא פעילים המשתמשים ב-Keep-Alive.
- ה-API של WebCrypto הועבר לקטגוריה היציבה, למעט פונקציות המשתמשות באלגוריתמים Ed25519, Ed448, X25519 ו-X448. כדי לגשת למודול WebCrypto אתה יכול כעת להשתמש globalThis.crypto או require('node:crypto').webcrypto.
- הוסרה התמיכה עבור DTrace, SystemTap ו-ETW (מעקב אחר אירועים עבור Windows), אשר תחזוקתו נחשבה כבלתי הולמת עקב הקושי לשמור עליה מעודכנת בהיעדר תוכנית תמיכה מתאימה.
ניתן להשתמש בפלטפורמת Node.js הן לתמיכה בצד השרת של יישומי אינטרנט והן ליצירת תוכניות רשת סטנדרטיות בצד הלקוח ובצד השרת. כדי להרחיב את הפונקציונליות של יישומי Node.js, הוכן אוסף גדול של מודולים, כולל אלו המיישמים... שרתים ולקוחות של HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, מודולים לאינטגרציה עם מסגרות אינטרנט שונות, מטפלי WebSocket ו-Ajax, מחברים ל-DBMS (MySQL, PostgreSQL, SQLite, MongoDB), מנועי תבניות, מנועי CSS, יישומים של אלגוריתמים קריפטוגרפיים ומערכות הרשאה (OAuth), מנתחי XML.
כדי לטפל במספר רב של בקשות מקבילות, Node.js משתמש במודל ביצוע קוד אסינכרוני המבוסס על עיבוד אירועים לא חוסם ומטפלי callback. שיטות ריבוב חיבורים נתמכות כוללות epoll, kqueue, /dev/poll ו-select. ספריית libuv, שהיא קבוצת-על של libev במערכות יוניקס ו-IOCP ב-IOCP, משמשת לריבוב חיבורים. Windowsספריית libeio משמשת ליצירת מאגר הליכים, ו-c-ares משולבת לביצוע שאילתות DNS במצב ללא חסימה. כל קריאות מערכת החסימה מבוצעות בתוך מאגר הליכים ולאחר מכן, כמו מטפלי אותות, מחזירות את תוצאותיהן דרך צינור ללא שם. ביצוע JavaScript מסופק על ידי מנוע 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("select..", function (result) {result processing});", שבו השליטה תעבור מיידית לקוד נוסף, ותוצאת השאילתה תעובד עם הגעת הנתונים.
מקור: OpenNet.ru
