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

Κυκλοφόρησε το Node.js 18.0, μια πλατφόρμα για την εκτέλεση εφαρμογών δικτύου σε JavaScript. Το Node.js 18.0 έχει ταξινομηθεί ως κλάδος μακροπρόθεσμης υποστήριξης, αλλά αυτή η κατάσταση θα εκχωρηθεί μόνο τον Οκτώβριο, μετά τη σταθεροποίηση. Το Node.js 18.x θα υποστηρίζεται μέχρι τον Απρίλιο του 2025. Η συντήρηση του προηγούμενου κλάδου LTS του Node.js 16.x θα διαρκέσει έως τον Απρίλιο του 2024 και το προηγούμενο έτος του τελευταίου κλάδου LTS 14.x έως τον Απρίλιο του 2023. Ο κλάδος 12.x LTS θα διακοπεί στις 30 Απριλίου και ο κλάδος σταδιοποίησης Node.js 17.x θα διακοπεί την 1η Ιουνίου.

Βασικές βελτιώσεις:

  • Ο κινητήρας V8 έχει ενημερωθεί στην έκδοση 10.1, που χρησιμοποιείται στο Chromium 101. Σε σύγκριση με την έκδοση 17.9.0 του Node.js, υπάρχει πλέον υποστήριξη για λειτουργίες όπως οι μέθοδοι findLast και findLastIndex για εύρεση στοιχείων σε σχέση με το τέλος ενός πίνακα και τη συνάρτηση Intl.supportedValuesOf. Βελτιωμένο Intl.Locale API. Η προετοιμασία των πεδίων κλάσης και των ιδιωτικών μεθόδων έχει επιταχυνθεί.
  • Το πειραματικό API fetch() είναι ενεργοποιημένο από προεπιλογή, σχεδιασμένο για φόρτωση πόρων μέσω του δικτύου. Η υλοποίηση βασίζεται σε κώδικα από τον πελάτη HTTP/1.1 undici και είναι όσο το δυνατόν πιο κοντά στο παρόμοιο API που παρέχεται στα προγράμματα περιήγησης. Αυτό περιλαμβάνει υποστήριξη για τις διεπαφές FormData, Headers, Request και Response για τον χειρισμό των κεφαλίδων αιτημάτων και απαντήσεων HTTP. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Προστέθηκε μια πειραματική υλοποίηση του Web Streams API, παρέχοντας πρόσβαση σε ροές δεδομένων που λαμβάνονται μέσω του δικτύου. Το API καθιστά δυνατή την προσθήκη των δικών σας χειριστών για εργασία με δεδομένα καθώς οι πληροφορίες φτάνουν μέσω του δικτύου, χωρίς να περιμένετε τη λήψη ολόκληρου του αρχείου. Τα αντικείμενα που είναι τώρα διαθέσιμα στο Node.js περιλαμβάνουν τα ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream και DecompressionStream.
  • Το Blob API έχει μεταφερθεί σε σταθερό, επιτρέποντάς σας να ενσωματώσετε αμετάβλητα ακατέργαστα δεδομένα για ασφαλή χρήση σε διαφορετικά νήματα εργασίας.
  • Το BroadcastChannel API έχει γίνει σταθερό, επιτρέποντάς σας να οργανώσετε την ανταλλαγή μηνυμάτων σε ασύγχρονη λειτουργία στη μορφή «ένας αποστολέας - πολλοί παραλήπτες».
  • Προστέθηκε πειραματική ενότητα node:test για τη δημιουργία και εκτέλεση δοκιμών σε JavaScript που επιστρέφουν αποτελέσματα σε μορφή TAP (Test Anything Protocol).
  • Παρέχεται η παραγωγή έτοιμων συγκροτημάτων για το Red Hat Enterprise Linux (RHEL) 8 και άλλες διανομές που βασίζονται στο Glibc 2.28+, συμπεριλαμβανομένων των Debian 10 και Ubuntu 20.04, καθώς και για macOS 10.15+. Λόγω προβλημάτων με την κατασκευή του κινητήρα V8, η δημιουργία εκδόσεων 32-bit για Windows έχει προσωρινά διακοπεί.
  • Παρείχε μια πειραματική επιλογή για τη δημιουργία ενός εκτελέσιμου Node.js με στοιχεία επιλεγμένα από τον χρήστη αρχικοποιημένα κατά την εκκίνηση. Για να ορίσετε τα στοιχεία εκκίνησης, η επιλογή "--node-snapshot-main" έχει προστεθεί στο configure build script, για παράδειγμα, "./configure —node-snapshot-main=marked.js; κόμβος ονόματος"

Η πλατφόρμα 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

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