Η τελευταία σημαντική έκδοση του NODE.JS φέρνει πολλές σημαντικές βελτιώσεις στην κοινότητα JavaScript, συμπεριλαμβανομένης μιας ενημερωμένης μηχανής JavaScript, η NPM Version 5, το Api V8, το Node.js της Google, Async_Hooks, Async_Hooks, Async_Hooks, AsywGs URL, πιο ασφαλείς ρυθμιστικά διαλύματα και πολλά άλλα. Εδώ θα σας ενημερώσουμε σχετικά με αυτά τα χαρακτηριστικά και τις άλλες πιο σημαντικές πτυχές αυτής της έκδοσης.
Ο Node.js 8 απελευθερώνεται κάτω από το όνομα του κώδικα ονόματος και είναι διαθέσιμο τώρα από το Node.js site . Θα λειτουργήσει ενεργά για άλλους 18 μήνες (δεν υπάρχουν νέα χαρακτηριστικά, απλά διορθώσεις σφαλμάτων, βελτιώσεις ασφαλείας και ενημερώσεις NPM), προτού πάτε στη λειτουργία συντήρησης. Όπως και με τις προηγούμενες κυκλοφορίες, κατά τη διάρκεια των κυκλοφορίων συντήρησης θα λάβουν μόνο κρίσιμες ενημερώσεις ασφαλείας και διορθώσεις σφαλμάτων.
Είναι ασφαλές να πούμε ότι δεδομένου ότι ο Node.Js ήταν γύρω, αυτή είναι μια από τις μεγαλύτερες ενημερώσεις που έχει λάβει ποτέ το χρόνο εκτέλεσης - αλλάζει πώς γράφονται τα εγγενή πρόσθετα και φέρνει επίσης πρόσθετες βελτιώσεις ασφάλειας και επιδόσεων.
Ανατολικός βοηθούσε τις εταιρείες να επιτύχουν το Node.js για τέσσερα χρόνια με εκπαίδευση, διαβούλευση ή ανάπτυξη. Ένας από τους μεγαλύτερους αγώνες που είχαμε προσθέσει εγγενές εξαρτήσεις σε έργα.
Πριν από τον Node.js 8, εάν οι εφαρμογές εξαρτώνται από τις μονάδες με εγγενή κώδικα, κάθε φορά που έφτασαν οι κύριες νέες εκδόσεις Node.js, ως διατηρητής εφαρμογής που έπρεπε να αναγγέλλετε τις εξαρτήσεις σας. Εάν ήσασταν τυχεροί, εργάστηκαν στην αρχή.
Αυτή η διαδικασία έγινε δυνατή με τους τεράστιους διαχειριστές της μονάδας εργασίας που έθεσαν στην κατασκευή των ενοτήτων τους σε ασυμβίβαστες εκδόσεις node.js, κυρίως με τη βοήθεια μιας ενότητας που ονομάζεται Nan (Node.js native αφαίρεσης).
Αυτή η διαδικασία απέχει πολύ από το ιδανικό, καθώς πολλές εταιρείες δεν κατάφεραν να ενημερώνονται οι εξαρτήσεις τους αν δεν μπορούσαν να καταρτιστούν και έβαλε επίσης ένα τεράστιο επιπλέον φόρτο εργασίας στους διαχειριστές των μονάδων. Για την επίλυση αυτού του ζητήματος, εισήχθη το API NODE.JS (ή N-API).
Το API NODE.JS είναι μία από τις σημαντικότερες βελτιώσεις του NODE.JS 8. Φέρνει ένα καλά καθορισμένο ABI (Δυαδική Διεπαφή Εφαρμογής) στον Node.js για να κάνει την εικονική του μηχανή αγνωστικιστή. Αυτό σημαίνει ότι οι εγγενείς μονάδες δεν θα λειτουργούν μόνο με διαφορετικές εκδόσεις node.js χρησιμοποιώντας τη μηχανή JavaScript της Google, αλλά με το τσάκρα της Microsoft επίσης.
Προς το παρόν, το Ν-api βρίσκεται σε πειραματικό κράτος, δηλαδή σημαντικές αλλαγές μπορεί να συμβούν τόσο στην εφαρμογή όσο και στην API. Με αυτό το εν λόγω, οι διατηρητικοί συντηρητές ενθαρρύνονται να δοκιμάσουν τη νέα διεπαφή και να δώσουν ανατροφοδότηση.
Εάν είστε συντηρητής ενότητας, μπορείτε να απελευθερώσετε μια έκδοση N-API της μονάδας σας παράλληλα με την κύρια έκδοση της μονάδας σας. Για να το πράξει, η επίσημη σύσταση είναι να δημοσιεύσετε μια έκδοση της ενότητας σας με την ετικέτα N-API σε NPM.
Για να δημοσιεύσετε μια έκδοση N-API, πρέπει να:
Με αυτόν τον τρόπο εξασφαλίζετε ότι η έκδοση N-API δεν θα γίνει η τελευταία έκδοση, οπότε αν κάποιος εγκαθιστά την ενότητα σας, από προεπιλογή λαμβάνουν την έκδοση N-API.
Το νήμα, ο διαχειριστής των συσκευασιών που δημιουργήθηκε από τους μηχανικούς του Facebook, κυκλοφόρησε τον Οκτώβριο του 2016. Προσπάθησε να αντιμετωπίσει ορισμένες ελλείψεις του επίσημου πελάτη NPM, κυρίως με το να γίνει όλο και περισσότερο και ντετερμινιστικός. Οι περισσότερες από αυτές τις καινοτομίες εμφανίζονται και στο NPM 5 επίσης.
Ακριβώς όπως το νήμα, το NPM 5 εισήγαγε ένα μηχανισμό κλειδώματος-αρχείων - κάθε φορά που εγκαθιστάτε μια νέα εξάρτηση στο έργο σας, θα προστεθεί αυτόματα όχι μόνο για να πακέτο.Json , αλλά ένα νέο αρχείο που ονομάζεται πακέτο-κλειδί.Json επισης.
Μπορείτε να ρωτήσετε ποια είναι η διαφορά μεταξύ πακέτο-κλειδί.Json και npm-shrinkwrap.json , καθώς το NPM-SHRINKWRAP έχει στο NPM από τότε για πάντα; Μακρά ιστορία σύντομη, είναι ουσιαστικά το ίδιο, αλλά πακέτο-κλειδί.Json δημιουργείται αυτόματα.
Σκοπός τους είναι να περιγράψουμε ακριβώς τι θα πρέπει να δημιουργήσει η NPM NPM για το πακέτο σας. Αν έχετε και τα δύο, npm-shrinkwrap θα υπερισχύσει. Με βάση τη σύσταση της NPM, θα πρέπει να χρησιμοποιήσετε npm-shrinkwrap.json Αν θέλετε να το δημοσιεύσετε, έτσι ώστε οι καταναλωτές της ενότητας να το χρησιμοποιήσουν επίσης. Από την άλλη πλευρά, θα πρέπει να χρησιμοποιήσετε το Package-Lock.json εσωτερικά - ακόμα και ελέγχεται σε αποθήκες.
Αλλά οι βελτιώσεις στο NPM 5 δεν έχουν σταματήσει με την προσθήκη ενός αρχείου κλειδώματος - με τη νέα έκδοση, όλες οι ενότητες που εγκαθίστανται αποθηκεύονται αυτόματα επίσης και θα προστεθούν τόσο στο δικό σας πακέτο.Json και πακέτο-κλειδί.Json αρχείο.
Ο τρόπος με τον οποίο οι εργασίες NPM Scripts έχουν αλλάξει λίγο. Πρώτα απ 'όλα, τα προεγκατεστημένα σενάρια που τρέχουν τώρα πριν από όλα τα άλλα, έτσι ώστε να μπορούν να τροποποιήσουν τον κατάλογο Node_Modules πριν το διαβάσει η CLI. Εκτός αυτού, έχουν προστεθεί δύο νέα σενάρια - PrepAd και Postpack. Και οι δύο τρέχουν σε πακέτο NPM και NPM δημοσιεύουν επίσης, αλλά όχι σε εγκαταστάσεις NPM.
Στην καρδιά του Node.js είναι ο κινητήρας JavaScript που ερμηνεύει τον κωδικό JavaScript, δημιουργεί bytecode από αυτό και επιτρέπει την εκτέλεση της αίτησής σας. Με την έκδοση του νέου Node.js 8, αυτό ενημερώθηκε επίσης.
Με τον ενημερωμένο κινητήρα V8, εισάγονται σημαντικές βελτιώσεις απόδοσης - αλλά το πιο σημαντικό, είναι εγγυημένο να διαθέτουμε μια δυαδική διεπαφή εφαρμογής προς τα εμπρός. Αυτό σημαίνει ότι ο Node.js θα είναι σε θέση να ενημερώσει τον κινητήρα V8 χωρίς κύριο Node.js απελευθέρωση.
Αυτό είναι σημαντικό, καθώς οι νεότερες εκδόσεις του κινητήρα V8 θα εισαγάγουν έναν νέο αγωγό μεταγλωττιστή, το οποίο θα εισαγάγει περαιτέρω βελτιώσεις απόδοσης στον κόμβο. Αυτή η ενημέρωση ήταν τόσο σημαντική που ήταν ο λόγος που ο αρχικός Node.js 8 η ημερομηνία έκδοσης αναβλήθηκε.
Ο σημερινός αγωγός είναι πολύ περίπλοκος και η εισαγωγή νέων χαρακτηριστικών γλώσσας συνήθως σημαίνει να αγγίζετε πολλαπλά μέρη του αγωγού. Με τον νέο αγωγό, θα γίνει πολύ απλούστερο.
Η ανάφλεξη, ο νέος διερμηνέας και ο Turbofan, ο νέος συνδετήρας βελτιστοποίησης, ήταν σε εξέλιξη για σχεδόν τρία και μισά χρόνια. Είναι το ίδρυμα στο οποίο θα κατασκευαστούν νέα γλώσσα. Περιλαμβάνουν την εμπειρία που η ομάδα V8 στο Google συλλέχθηκε από τη μέτρηση των εφαρμογών JavaScript της πραγματικής ζωής.
Για να καταλάβουμε καλύτερα τι είναι τα άγκιστρα async, ας κάνουμε ένα βήμα πίσω και θα αντιμετωπίσουμε πρώτα την τοπική αποθήκευση της συνέχισης. Δουλεύουν σαν νήμα-τοπική αποθήκευση σε σπείρωμα προγραμματισμού, αλλά στο Node.js χρησιμοποιεί επανάκληση για να περάσει το πλαίσιο.
Φανταστείτε ότι γράφετε μια εφαρμογή που φέρει ένα προϊόν από τη βάση δεδομένων, στη συνέχεια αργότερα θέλετε να το στείλετε στην ανταπόκρισή σας HTML:
const createnamePace = απαιτούν ('συνέχεια-τοπική αποθήκευση'). CreatenameSpace
const session = createnamespace ('my-app-session')
const db = απαιτούν ('/ db.js ')
Λειτουργία Onequest (Επιλογές, Επόμενο) {
db.fetchuserbyid (επιλογές.id, λειτουργία (σφάλμα, χρήστης) {
Εάν (σφάλμα) {
Επιστρέψτε στη συνέχεια (σφάλμα)
}
Session.Set ('χρήστης', χρήστης)
Επόμενο()
})
Αργότερα, αν θέλετε να αποκτήσετε πρόσβαση στο αντικείμενο χρήστη, το μόνο που χρειάζεται να κάνετε είναι να το πάρετε από την τοπική αποθήκευση:
const getNamnamespace = απαιτούν ('συνέχεια-τοπική αποθήκευση'). GetNamePace
Σύνθεση const = getNameSpace ('η συνεδρία μου')
const rendert = comeit ('./ render.js')
Λειτουργία τελείωμα (απόκριση) {
const user = session.get ('χρήστης')
({χρήστης: χρήστης}). Σωλήνας (απόκριση)
}
Αυτή η τεχνική χρησιμοποιείται εκτενώς από τους παρόχους παρακολούθησης απόδοσης της εφαρμογής, όπως το ίχνος από το RistStack, για να διατηρήσει το πλαίσιο εκτέλεσης και τη συλλογή πληροφοριών παρακολούθησης από τα συστήματα παραγωγής.
Με άγκιστρα Async, ένα παρόμοιο χαρακτηριστικό μετακινείται στον πυρήνα Node.js - βοηθά στην παρακολούθηση των ασύγχρονων αιτημάτων και των χειριστών μέσω του κύκλου ζωής τους. ο async_hooks Η ενότητα παρέχει ένα API για την καταγραφή των επιστροφών που παρακολουθούν τη διάρκεια ζωής των ασύγχρονων πόρων που δημιουργήθηκαν μέσα σε μια εφαρμογή Node.js.
Πριν από τον Node.js 8, αν θέλετε να χρησιμοποιήσετε τις βασικές μονάδες σε μια εφαρμογή που χρησιμοποιεί υποσχέσεις, έπρεπε να τυλίξετε χειροκίνητα τις βασικές μονάδες, ώστε να μπορούν να χρησιμοποιηθούν με τον ίδιο τρόπο. Φαινόταν κάτι τέτοιο:
const fs = απαιτούν ('FS')
Λειτουργία ReadFilePromise (... Args) {
Επιστρέψτε τη νέα υπόσχεση ((αποφασιστικότητα, απορρίψτε) = & gt; {
fs.readfile (... args, (σφάλμα, αποτέλεσμα) = & gt; {
αν (σφάλμα) {
Επιστροφή αποφασιστικότητας (σφάλμα)
}
αποφασιστικότητα (αποτέλεσμα)
})
})
}
ReadfilePromise ('. / Package.Json', 'UTF-8')
.όταν ((res) = & gt; console.log (res))
.Catch ((ERR) = & GT; Console.log (ERR))
Με το Node.js 8, προστίθεται μια νέα μέθοδος βοηθητικού στη μονάδα πυρήνα, UTIL.Promisify. Επιτρέπει τον Standard Node.js Apis Callback-Style να τυλιχτεί σε μια λειτουργία που επιστρέφει τις υποσχέσεις.
Χρησιμοποιώντας αυτή τη λειτουργία, το παραπάνω απόσπασμα απλοποιείται και γίνεται αυτό:
const fs = απαιτούν ('FS')
const promisifify = απαιτείται («util»). Promisify
READFILEPROMISE = PROMISIFY (FS.READFILE)
ReadfilePromise ('. / Package.Json', 'UTF-8')
.όταν ((res) = & gt; console.log (res))
.Catch ((ERR) = & GT; Console.log (ERR))
Πριν από το Node.js έκδοση 8, τα buffers που διατίθενται χρησιμοποιώντας το νέο κατασκευαστή buffer (αριθμός) δεν αρχικοποιεί το χώρο μνήμης με μηδενικά. Ως αποτέλεσμα, οι νέες περιπτώσεις buffer θα μπορούσαν να περιέχουν ευαίσθητες πληροφορίες, οδηγώντας σε σοβαρά προβλήματα ασφάλειας - ακόμη και δημοφιλείς ενότητες όπως η Mongoose, WS ή η ενότητα αιτήσεως επηρεάστηκαν.
Αλλά πώς φτάσαμε εκεί; Όταν η Javascript μετακινήθηκε από το πρόγραμμα περιήγησης στην πλευρά του διακομιστή, υπήρχε ανάγκη για γρήγορη και εύκολη επεξεργασία δεδομένων - έτσι ώστε να προστεθεί η κατηγορία buffer. Το Buffer είναι μια μεταβλητή συστοιχία δυαδικών δεδομένων. Όταν χρησιμοποιείται με τον κατασκευαστή που ζητά το μέγεθος του νέου buffer, διατηρεί μόνο το χώρο μνήμης, αλλά δεν το καθαρίσει.
Καθώς ο διακομιστής σας μπορεί να εξυπηρετήσει πολλούς χρήστες ταυτόχρονα (σε αντίθεση με το πρόγραμμα περιήγησής σας), είναι πιθανό ο πρόσφατα διατεθειμένος χώρος μνήμης να περιέχει ευαίσθητες πληροφορίες από άλλους χρήστες (ακόμα και τους κωδικούς πρόσβασης!), Και μπορεί ενδεχομένως να εκτεθεί σε έναν εισβολέα.
Ενώ ήταν μια εκ προθέσεως απόφαση να ενισχυθεί η απόδοση της νέας δημιουργίας buffer, για τους περισσότερους από εμάς, δεν ήταν η προβλεπόμενη χρήση - ακόμη και αν τεκμηριώθηκε. Εξαιτίας αυτού, ξεκινώντας από το Node.js 8, τα buffer που κατανέμονται χρησιμοποιώντας νέο buffer (αριθμός) ή ρυθμιστικό διάλυμα (αριθμός) θα γεμίζονται αυτόματα με μηδενικά.
Πριν από το Node.js 8, αν θέλετε να διορθώσετε τις εφαρμογές σας Node.js, μία από τις ευκολότερες λύσεις ήταν να ξεκινήσει το ενσωματωμένο πρόγραμμα εντοπισμού σφαλμάτων, χρησιμοποιώντας το εντελώς εντοπισμό κόμβων index.js. Με τον Node.js 8, αυτό αφαιρείται και αντικαθίσταται από τον επιθεωρητή κόμβου. Μπορείτε ακόμα να χρησιμοποιήσετε το debugger cli, αλλά θα αφαιρεθεί σύντομα.
Από τώρα και στο εξής, θα πρέπει να χρησιμοποιήσετε τον κόμβο - Ininspect index.js , ή κόμβος - Index.js.js Αν θέλετε το πρόγραμμα εντοπισμού σφαλμάτων να βάλει ένα σημείο διακοπής στην πρώτη γραμμή της εφαρμογής. Μόλις το εκτελέσετε, θα λάβετε έναν σύνδεσμο websocket που μπορεί να χρησιμοποιήσει το Google Chrome για να συνδέσει το πρόγραμμα σφαλμάτων του.
Θα πρέπει να κατευθυνθείτε Chrome: // Επιθεωρήστε Στο πρόγραμμα περιήγησης Chrome σας και θα αναγνωρίσει αυτόματα την εφαρμογή Running Node.js, επιτρέποντάς σας να συνδεθείτε. Αφού συνδέσετε τη διαδικασία σας, θα πάρετε το πρόγραμμα εντοπισμού σφαλμάτων του Chrome για να επιθεωρήσετε την εφαρμογή Τρέξιμο Node.js.
Προηγουμένως, εάν θέλετε να ελέγξετε ένα σφάλμα που λάβατε στο χρόνο εκτέλεσης και ενεργήστε ανάλογα, στις περισσότερες περιπτώσεις που έπρεπε να ελέγξετε το μήνυμα σφάλματος. Αυτό ήταν επιρρεπές σφάλμα, καθώς τα μηνύματα σφάλματος ενδέχεται να έχουν αλλάξει με νέες εκδόσεις node.js.
Με τον Node.js 8, οι κώδικες στατικών σκευών έχουν ανατεθεί στα περισσότερα από τα σφάλματα - εξακολουθεί να είναι μια εργασία σε-πρόοδος, αλλά μόλις τελειώσει, αυτοί οι κωδικοί σφάλματος δεν θα αλλάξουν, ακόμα και αν το μήνυμα στο σφάλμα κάνει .
Για παράδειγμα, το πρόσφατα εισάγεται Whatwg usl api θα ρίξει ένα Err_invalid_url Σφάλμα στο παρακάτω απόσταντ, καθώς η παράμετρος δεν είναι έγκυρη διεύθυνση URL:
Const URL = Απαιτείται ('URL'). URL
const myurl = νέα διεύθυνση URL ('/ foo')
Όπως μπορείτε να δείτε, η έκδοση της ενημερωμένης έκδοσης Node.js 8 έχει φέρει πολλές νέες και συναρπαστικές βελτιώσεις στην κοινότητα JavaScript. Για να αρχίσετε να δοκιμάζετε με όλα αυτά τα νέα χαρακτηριστικά μόνοι σας, κατευθυνθείτε προς τα πάνω nodejs.org , Κατεβάστε το δυαδικό Node.js 8 και αρχίστε να παίζετε με το νέο σας εργαλείο!
Αυτό το άρθρο εμφανίστηκε αρχικά στο καθαρό περιοδικό Τεύχος 296. Αγοράστε το εδώ .
Σχετικά Άρθρα:
(Πιστωτική εικόνα: Σκίτσο βαρύτητας) Σκίτσο βαρύτητας, το εργαλε..
Βλέποντας το διπλό; Αυτή η εικόνα έχει αναμιγνύεται και αναμειγνύεται με ..
Το Marmoset Toolbag δεν είναι καθόλου νέο στο Τρισδιάστατη τέχνη βιομ�..
Άρχισα να χρησιμοποιώ τον κινηματογράφο 4d λίγους μήνες μετά τη λήψη τω..
Το Procreate έχει γίνει γρήγορα η εφαρμογή μου για ψηφιακή ζωγραφική. Χάρη �..
Ο φωτισμός είναι θεμελιώδης σε οποιαδήποτε Τρισδιάστατη τέχνη ..
Πρωτότυπο Είναι ίσως ένα από τα σημαντικότερα μέρη της διαδικασ..
Κάθισα κάτω, έπαιξε κάποια μουσική, άκουσαν τα φώτα και άνοιξε το φορητ..