Διατίθεται η πλατφόρμα JavaScript Node.js 19.0 από την πλευρά του διακομιστή

Κυκλοφόρησε το 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).
  • Για όλες τις εξερχόμενες συνδέσεις HTTP/HTTPS, είναι ενεργοποιημένη η υποστήριξη για τον μηχανισμό HTTP 1.1 Keep-Alive, ο οποίος αφήνει τη σύνδεση ανοιχτή για ορισμένο χρονικό διάστημα για την επεξεργασία πολλών αιτημάτων HTTP στην ίδια σύνδεση. Το Keep-Alive αναμένεται να βελτιώσει την απόδοση και την απόδοση. Από προεπιλογή, το χρονικό όριο ανοιχτής σύνδεσης έχει οριστεί στα 5 δευτερόλεπτα. Η υποστήριξη για την ανάλυση της κεφαλίδας Keep-Alive HTTP στις αποκρίσεις διακομιστή έχει προστεθεί στην υλοποίηση του προγράμματος-πελάτη HTTP και η αυτόματη αποσύνδεση ανενεργών πελατών χρησιμοποιώντας το Keep-Alive προστέθηκε στην υλοποίηση διακομιστή HTTP Node.js.
  • Το WebCrypto API έχει μεταφερθεί στη σταθερή κατηγορία, με εξαίρεση τις συναρτήσεις που χρησιμοποιούν τους αλγόριθμους Ed25519, Ed448, X25519 και X448. Για να αποκτήσετε πρόσβαση στη μονάδα WebCrypto, μπορείτε πλέον να χρησιμοποιήσετε το globalThis.crypto ή το require('node:crypto').webcrypto.
  • Η υποστήριξη για τα εργαλεία ανίχνευσης DTrace, SystemTap και ETW (Event Tracing για Windows) έχει καταργηθεί, η συντήρηση των οποίων θεωρήθηκε ακατάλληλη λόγω της πολυπλοκότητας της ενημερωμένης διατήρησής του, ελλείψει κατάλληλου σχεδίου υποστήριξης.

Η πλατφόρμα Node.js μπορεί να χρησιμοποιηθεί τόσο για τη συντήρηση διακομιστών εφαρμογών Web όσο και για τη δημιουργία κανονικών προγραμμάτων δικτύου πελατών και διακομιστών. Για την επέκταση της λειτουργικότητας των εφαρμογών για το Node.js, έχει προετοιμαστεί μια μεγάλη συλλογή λειτουργικών μονάδων, στις οποίες μπορείτε να βρείτε ενότητες με την υλοποίηση HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 διακομιστές και πελάτες, ενότητες για ενοποίηση με διάφορα πλαίσια web, προγράμματα χειρισμού WebSocket και Ajax, υποδοχές DBMS (MySQL, PostgreSQL, SQLite, MongoDB), μηχανές προτύπων, μηχανές CSS, υλοποιήσεις αλγορίθμων κρυπτογράφησης και συστήματα εξουσιοδότησης (OAuth), αναλυτές XML.

Για να διασφαλίσει την επεξεργασία μεγάλου αριθμού παράλληλων αιτημάτων, το Node.js χρησιμοποιεί ένα μοντέλο ασύγχρονης εκτέλεσης κώδικα που βασίζεται στον χειρισμό συμβάντων χωρίς αποκλεισμό και στον ορισμό των χειριστών επανάκλησης. Υποστηριζόμενες μέθοδοι για πολυπλεξία συνδέσεων είναι το epoll, το kqueue, το /dev/poll και το select. Για την πολυπλεξία σύνδεσης, χρησιμοποιείται η βιβλιοθήκη libuv, η οποία είναι ένα πρόσθετο για το libev σε συστήματα Unix και το IOCP στα Windows. Η βιβλιοθήκη libeio χρησιμοποιείται για τη δημιουργία μιας ομάδας νημάτων και το c-ares είναι ενσωματωμένο για την εκτέλεση ερωτημάτων DNS σε λειτουργία μη αποκλεισμού. Όλες οι κλήσεις συστήματος που προκαλούν μπλοκάρισμα εκτελούνται μέσα στο νήμα και στη συνέχεια, όπως οι χειριστές σήματος, μεταφέρουν το αποτέλεσμα της εργασίας τους πίσω μέσω ενός ανώνυμου σωλήνα (pipe). Η εκτέλεση του κώδικα JavaScript παρέχεται μέσω της χρήσης της μηχανής V8 που αναπτύχθηκε από την Google (επιπλέον, η Microsoft αναπτύσσει μια έκδοση του 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("επιλογή..", συνάρτηση (αποτέλεσμα) {επεξεργασία αποτελεσμάτων});", στην οποία ο έλεγχος θα περάσει αμέσως σε περαιτέρω κώδικα και το αποτέλεσμα του ερωτήματος θα υποβληθεί σε επεξεργασία καθώς φτάνουν τα δεδομένα.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο