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

Κυκλοφόρησε το Node.js 16.0, μια πλατφόρμα για την εκτέλεση εφαρμογών δικτύου σε JavaScript. Το Node.js 16.0 έχει ταξινομηθεί ως κλάδος μακροπρόθεσμης υποστήριξης, αλλά αυτή η κατάσταση θα εκχωρηθεί μόνο τον Οκτώβριο, μετά τη σταθεροποίηση. Το Node.js 16.0 θα υποστηρίζεται μέχρι τον Απρίλιο του 2023. Η συντήρηση του προηγούμενου κλάδου LTS του Node.js 14.0 θα διαρκέσει μέχρι τον Απρίλιο του 2023 και το προηγούμενο έτος LTS κλάδου 12.0 έως τον Απρίλιο του 2022. Η υποστήριξη για τον κλάδο 10.0 LTS θα διακοπεί σε 10 ημέρες.

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

  • Ο κινητήρας V8 έχει ενημερωθεί στην έκδοση 9.0 (το Node.js 15 χρησιμοποίησε την έκδοση 8.6), η οποία επιτρέπει την εφαρμογή χαρακτηριστικών όπως η ιδιότητα "δείκτες" για κανονικές εκφράσεις (περιλαμβάνει έναν πίνακα με τις θέσεις έναρξης και λήξης ομάδων αντιστοιχιών) , η μέθοδος Atomics στο Node.js 16 .waitAsync (ασύγχρονη έκδοση του Atomics.wait), υποστήριξη για τη χρήση της λέξης-κλειδιού αναμονής σε λειτουργικές μονάδες ανώτατου επιπέδου. Οι κλήσεις συναρτήσεων έχουν επιταχυνθεί σε περιπτώσεις όπου ο αριθμός των ορισμάτων που διαβιβάζονται δεν αντιστοιχεί στις παραμέτρους που ορίζονται στη συνάρτηση.
  • Το Timers Promises API έχει σταθεροποιηθεί, παρέχοντας ένα εναλλακτικό σύνολο συναρτήσεων για εργασία με χρονόμετρα που επιστρέφουν αντικείμενα Promise ως έξοδο, γεγονός που εξαλείφει την ανάγκη χρήσης util.promisify(). εισαγωγή { setTimeout } από το 'timers/promises'. async λειτουργία run() { await setTimeout(5000); console.log('Hello, World!'); } τρέξιμο();
  • Προστέθηκε μια πειραματική εφαρμογή του Web Crypto API, σχεδιασμένη να εκτελεί βασικές κρυπτογραφικές λειτουργίες στο πλάι των εφαρμογών Ιστού, όπως χειρισμό κρυπτογραφικών κατακερματισμών, δημιουργία και επαλήθευση ψηφιακών υπογραφών, κωδικοποίηση και αποκωδικοποίηση δεδομένων χρησιμοποιώντας διάφορες μεθόδους κρυπτογράφησης και δημιουργία κρυπτογραφικά ασφαλούς τυχαίους αριθμούς. Το API παρέχει επίσης λειτουργίες για τη δημιουργία και τη διαχείριση κλειδιών.
  • Το N-API (API για την ανάπτυξη πρόσθετων) έχει ενημερωθεί στην έκδοση 8.
  • Η μετάβαση στη νέα έκδοση του διαχειριστή πακέτων NPM 7.10 έχει γίνει.
  • Σταθεροποίησε την υλοποίηση της κλάσης AbortController, η οποία βασίζεται στο API Web AbortController και επιτρέπει την ακύρωση σημάτων σε επιλεγμένα API που βασίζονται σε Promise.
  • Η υποστήριξη για την τρίτη έκδοση της μορφής Source Map, που χρησιμοποιείται για τη σύγκριση δημιουργούμενων, επεξεργασμένων ή συσκευασμένων λειτουργικών μονάδων με τον αρχικό πηγαίο κώδικα, έχει σταθεροποιηθεί.
  • Για συμβατότητα με παλαιού τύπου API Ιστού, έχουν προστεθεί οι μέθοδοι buffer.atob(data) και buffer.btoa(data).
  • Ξεκίνησε ο σχηματισμός συγκροτημάτων για νέες συσκευές Apple εξοπλισμένες με το τσιπ M1 ARM.
  • Στην πλατφόρμα Linux, οι απαιτήσεις έκδοσης μεταγλωττιστή έχουν αυξηθεί στο GCC 8.3.

Θυμηθείτε ότι η πλατφόρμα 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("επιλογή..", συνάρτηση (αποτέλεσμα) {επεξεργασία αποτελεσμάτων});", στην οποία ο έλεγχος θα περάσει αμέσως σε περαιτέρω κώδικα και το αποτέλεσμα του ερωτήματος θα υποβληθεί σε επεξεργασία καθώς φτάνουν τα δεδομένα.

Επιπλέον, μπορεί να σημειωθεί ότι η εταιρεία Deno, που ιδρύθηκε από τον δημιουργό του Node.js για την ανάπτυξη της επόμενης γενιάς πλατφόρμας Deno, έλαβε 4.9 εκατομμύρια δολάρια σε επενδύσεις. Στο σκοπό του, το Deno είναι παρόμοιο με το Node.js, αλλά προσπαθεί να εξαλείψει τα εννοιολογικά λάθη που γίνονται στην αρχιτεκτονική Node.js και να παρέχει στους χρήστες ένα πιο ασφαλές περιβάλλον. Σημειώνεται ότι οι επιχειρηματικές λύσεις της Deno θα βασίζονται σε εντελώς ανοιχτά προϊόντα και το μοντέλο Open Core με ξεχωριστή πληρωμένη λειτουργικότητα θεωρείται απαράδεκτο για την πλατφόρμα Deno.

Πηγή: opennet.ru

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