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

Διαθέσιμος απελευθέρωση Κόμβος.js 13.0,πλατφόρμες για την εκτέλεση εφαρμογών δικτύου σε JavaScript. Παράλληλα, ολοκληρώθηκε η σταθεροποίηση του προηγούμενου κλάδου του Node.js 12.x, το οποίο έχει μεταφερθεί στην κατηγορία των εκδόσεων μακροχρόνιας υποστήριξης, ενημερώσεις για τις οποίες κυκλοφορούν για 4 χρόνια. Η υποστήριξη για τον προηγούμενο κλάδο LTS του Node.js 10.0 θα διαρκέσει έως τον Απρίλιο του 2021 και η υποστήριξη για τον τελευταίο κλάδο LTS 8.0 έως τον Ιανουάριο του 2020.

Ο κύριος βελτιώσεις:

  • Ο κινητήρας V8 ενημερώθηκε στην έκδοση 7.8, το οποίο χρησιμοποιεί νέες τεχνικές βελτιστοποίησης απόδοσης, βελτιώνει την αποδομή αντικειμένων, μειώνει την κατανάλωση μνήμης και μειώνει τον χρόνο προετοιμασίας για την εκτέλεση του WebAssembly.
  • Η πλήρης υποστήριξη για διεθνοποίηση και Unicode που βασίζεται σε βιβλιοθήκη είναι ενεργοποιημένη από προεπιλογή ΜΕΘ (International Components for Unicode), το οποίο επιτρέπει στους προγραμματιστές να γράφουν κώδικα υποστηρικτικός εργαστείτε με διαφορετικές γλώσσες και τοπικές ρυθμίσεις. Η μονάδα full-icu είναι πλέον εγκατεστημένη από προεπιλογή.
  • Το API σταθεροποιήθηκε Εργατικά νήματα, επιτρέποντας δημιουργία βρόχων συμβάντων με πολλά νήματα. Η υλοποίηση βασίζεται στη λειτουργική μονάδα worker_threads, η οποία σας επιτρέπει να εκτελείτε κώδικα JavaScript σε πολλαπλά παράλληλα νήματα. Η σταθερή υποστήριξη για το Workers Threads API έχει επίσης υποστηριχθεί στον κλάδο LTS του Node.js 12.x.
  • Οι απαιτήσεις για πλατφόρμες έχουν αυξηθεί. Για συναρμολόγηση τώρα απαιτείται τουλάχιστον macOS 10.11 (απαιτείται Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008.
  • Βελτιωμένη υποστήριξη για Python 3. Εάν το σύστημα διαθέτει Python 2 και Python 3, η Python 2 εξακολουθεί να χρησιμοποιείται, αλλά έχει προστεθεί η δυνατότητα δημιουργίας όταν είναι εγκατεστημένη μόνο η Python 3 στο σύστημα.
  • Η παλιά υλοποίηση του αναλυτή HTTP (“—http-parser=legacy”) έχει καταργηθεί. Καταργήθηκαν ή καταργήθηκαν κλήσεις και ιδιότητες FSWatcher.prototype.start(), ChildProcess._channel, open() σε αντικείμενα ReadStream και WriteStream, request.connection, answer.connection, module.createRequireFromPath();
  • ΕΠΟΜΕΝΟ βγήκε ενημέρωση 13.0.1, η οποία διόρθωσε γρήγορα πολλά σφάλματα. Συγκεκριμένα, το πρόβλημα με το npm 6.12.0 που εμφανίζει μια προειδοποίηση σχετικά με τη χρήση μιας μη υποστηριζόμενης έκδοσης έχει επιλυθεί.

Ας υπενθυμίσουμε ότι η πλατφόρμα 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

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