Έκδοση JavaScript Node.js 14.0 από την πλευρά του διακομιστή

πήρε θέση απελευθέρωση Κόμβος.js 14.0,πλατφόρμες για την εκτέλεση εφαρμογών δικτύου σε JavaScript. Το 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 για τη λήψη τοπικών ονομάτων κ.λπ.
  • Πραγματοποιήθηκε μια αναθεώρηση του API Streams, με στόχο τη βελτίωση της συνέπειας των API Streams και την εξάλειψη των διαφορών στη συμπεριφορά των βασικών τμημάτων του Node.js. Για παράδειγμα, η συμπεριφορά του http.OutgoingMessage είναι κοντά στο stream.Writable και το net.Socket είναι παρόμοια με το stream.Duplex. Η επιλογή autoDestroy έχει οριστεί ως "true" από προεπιλογή, που σημαίνει κλήση "_destroy" μετά την ολοκλήρωση.
  • Προστέθηκε πειραματική υποστήριξη API ΗΜΟΥΝ (Διεπαφή συστήματος WebAssembly), παρέχοντας διεπαφές λογισμικού για άμεση αλληλεπίδραση με το λειτουργικό σύστημα (POSIX API για εργασία με αρχεία, υποδοχές κ.λπ.).
  • Αυξημένες απαιτήσεις για ελάχιστες εκδόσεις μεταγλωττιστές και πλατφόρμες: macOS 10.13 (High Sierra), GCC 6, Windows νεότερο 7/2008R2.

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

Για τη διαχείριση μεγάλου αριθμού παράλληλων αιτημάτων, το Node.js χρησιμοποιεί ένα μοντέλο ασύγχρονης εκτέλεσης κώδικα που βασίζεται στην επεξεργασία συμβάντων χωρίς αποκλεισμό και στον ορισμό χειριστών επανάκλησης. Οι υποστηριζόμενες μέθοδοι για πολυπλεξία συνδέσεων περιλαμβάνουν epoll, kqueue, /dev/poll και select. Η βιβλιοθήκη χρησιμοποιείται για πολυπλεξικές συνδέσεις libuv, που είναι μια υπερκατασκευή πάνω λίββ σε συστήματα Unix και μέσω IOCP στα Windows. Μια βιβλιοθήκη χρησιμοποιείται για τη δημιουργία μιας ομάδας νημάτων λιβείο, για την εκτέλεση ερωτημάτων DNS σε λειτουργία μη αποκλεισμού είναι ενσωματωμένη c-ares. Όλες οι κλήσεις συστήματος που προκαλούν μπλοκάρισμα εκτελούνται εντός της ομάδας νημάτων και στη συνέχεια, όπως οι χειριστές σήματος, περνούν το αποτέλεσμα της εργασίας τους πίσω μέσω ενός ανώνυμου σωλήνα. Η εκτέλεση του κώδικα JavaScript διασφαλίζεται μέσω της χρήσης μιας μηχανής που αναπτύχθηκε από την Google V8 (Επιπλέον, η Microsoft αναπτύσσει μια έκδοση του Node.js με τη μηχανή Chakra-Core).

Στον πυρήνα του, το Node.js είναι παρόμοιο με τα πλαίσια Perl AnyEvent, Ruby Event Machine, Python Twisted и εκτέλεση συμβάντα στο Tcl, αλλά ο βρόχος συμβάντος στο Node.js είναι κρυφός από τον προγραμματιστή και μοιάζει με τον χειρισμό συμβάντων σε μια εφαρμογή Ιστού που εκτελείται σε πρόγραμμα περιήγησης. Όταν γράφετε εφαρμογές για το node.js, είναι απαραίτητο να λαμβάνετε υπόψη τις ιδιαιτερότητες του προγραμματισμού που βασίζεται σε συμβάντα, για παράδειγμα, αντί να κάνετε "var result = db.query("επιλογή..");" με την αναμονή για την ολοκλήρωση της εργασίας και την επακόλουθη επεξεργασία των αποτελεσμάτων, το Node.js χρησιμοποιεί την αρχή της ασύγχρονης εκτέλεσης, δηλ. ο κώδικας μετατρέπεται σε "db.query("επιλογή..", συνάρτηση (αποτέλεσμα) {επεξεργασία αποτελέσματος});", στην οποία ο έλεγχος θα περάσει αμέσως σε περαιτέρω κώδικα και το αποτέλεσμα του ερωτήματος θα υποβληθεί σε επεξεργασία καθώς φτάνουν τα δεδομένα. .

Πηγή: opennet.ru

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