Το Node.js μπορεί να είναι καλά εδραιωμένο, αλλά μην παραβλέπετε το Deno, ένα παρόμοιο πλαίσιο από τον ίδιο προγραμματιστή.

Το Node.js είναι ένα μακροχρόνιο πλαίσιο που σας επιτρέπει να γράφετε κώδικα από την πλευρά του διακομιστή σε JavaScript. Αρχικά κυκλοφόρησε το 2009, το πλαίσιο γνώρισε σημαντική ανάπτυξη και έκρηξη στη χρήση τα τελευταία χρόνια.

Το Deno έχει διαφορές στο στυλ μορφοποίησης, στη σύνταξη εισαγωγής και στη διαχείριση πακέτων, αλλά ο ίδιος μηχανικός κατασκεύασε αυτά τα ανταγωνιστικά πλαίσια στον ίδιο κινητήρα.

Σήμερα, η Deno υπάρχει για αρκετό καιρό για να κερδίσει μια θέση στις στοίβες πολλών προγραμματιστών. Εάν θέλετε να ξεκινήσετε ένα νέο έργο JavaScript, μπορεί να αναρωτιέστε ποια είναι η σωστή επιλογή.

Χαρακτηριστικά Node και Deno

Σχεδόν εννέα χρόνια μετά την κυκλοφορία του Node, ο προγραμματιστής του, Ryan Dahl, ανακοίνωσε ένα νέο έργο: το Deno. Εκεί που το Node ήταν κάποτε η μόνη επιλογή για JavaScript από την πλευρά του διακομιστή, η Deno μας έδωσε μια εναλλακτική.

instagram viewer

Το Node.js και το Deno είναι αρκετά παρόμοια από πολλές απόψεις. Η πλειοψηφία των διαφορών μεταξύ των δύο εμφανίζονται κάτω από την κουκούλα. Όπου το Node εκτελείται με τη μηχανή JavaScript V8, το Deno τρέχει πάνω από έναν προσαρμοσμένο κινητήρα κατασκευασμένο στο Rust με ιδιαίτερη έμφαση στην απόδοση.

Οι περισσότερες από τις κύριες διαφορές μεταξύ των δύο βασίζονται στα χαρακτηριστικά που υποστηρίζει κάθε γλώσσα. Τα modules, το linting, το typescript και η διαχείριση πακέτων αντιμετωπίζονται όλα με διαφορετικό τρόπο μεταξύ των δύο.

Εισαγωγές μονάδας: CommonJS vs. ES

Το Node.js χρησιμοποιεί λειτουργικές μονάδες CommonJS από προεπιλογή με τη σύνταξη require(). Το Node σάς επιτρέπει να το αλλάξετε αυτό αλλάζοντας τα αρχεία διαμόρφωσής σας ώστε να χρησιμοποιούν δομοστοιχεία ECMAScript με τη σύνταξη import() αν το επιθυμούν.

// Αυτή είναι μια έγκυρη εισαγωγή μονάδας CommonJS στο Node.js
var _ = απαιτώ("lodash");

// Αυτή είναι μια έγκυρη εισαγωγή μονάδας ECMAScript στο Node.js
εισαγωγή _ από'lodash';

Υπάρχει κάποια περιορισμένη διαλειτουργικότητα μεταξύ των δύο τύπων φόρτωσης λειτουργικών μονάδων ES, με ορισμένες μονάδες ECMAScript να μπορούν να συμπεριληφθούν χρησιμοποιώντας τη σύνταξη απαιτήσεων(). Κάθε τύπος εισαγωγής χειρίζεται τις λειτουργικές μονάδες ελαφρώς διαφορετικά, αλλά η μία από τις δύο θα λειτουργεί στις περισσότερες περιπτώσεις.

Αυτό σας επιτρέπει να επιλέξετε τη μεθοδολογία που προτιμάτε για τη συμπερίληψη εξωτερικών λειτουργικών μονάδων κατά τη δημιουργία ενός έργου.

Η Deno ακολουθεί μια διαφορετική προσέγγιση όταν πρόκειται να συμπεριλάβει εξωτερικές μονάδες σε ένα έργο. Το Deno χρησιμοποιεί τη σύνταξη include() για όλα τα modules, ωστόσο, σε αντίθεση με την εισαγωγή του Node, τα Modules που εισάγονται στο Deno μπορούν να προέρχονται από οποιαδήποτε τοποθεσία. Αυτές οι τοποθεσίες μπορούν να περιλαμβάνουν ακόμη και απομακρυσμένα δίκτυα παράδοσης περιεχομένου (CDN).

// Αυτή είναι μια έγκυρη δήλωση εισαγωγής στο Deno
εισαγωγή" https://deno.land/x/[email protected]/dist/lodash.js";

Αυτό σας δίνει τη δυνατότητα να εισάγετε εξαρτήσεις από οποιαδήποτε τοποθεσία, τοπική ή απομακρυσμένη, προσφέροντας πολύ μεγαλύτερη ευελιξία. Εάν προτιμάτε να εργάζεστε με την παραδοσιακή σύνταξη απαιτήσεων από το Node.js, μπορείτε να γράψετε τη δική σας συνάρτηση απαίτησης πολυπλήρωσης στο Deno ως λύση.

Υποστήριξη για TypeScript Code

Το TypeScript έχει δει αυξανόμενη δημοτικότητα τα τελευταία χρόνια, χωρίς σημάδια επιβράδυνσης σύντομα. Η εισαγωγή της δυναμικής κώδικα ασφαλείας τύπου στην JavaScript έχει αποδειχθεί μια εξαιρετικά επιτυχημένη προσπάθεια.

Σήμερα, η ρύθμιση ενός νέου έργου TypeScript ή η μετατροπή ενός υπάρχοντος έργου Node.js σε TypeScript είναι απλή, αν και κάπως χρονοβόρα.

Η προσθήκη υποστήριξης TypeScript έχει γίνει αρκετά δημοφιλής ώστε τα περισσότερα σύγχρονα πλαίσια έχουν πλέον κάποια μορφή υποστήριξης TypeScript. Η Angular πρωτοστάτησε, με την υποστήριξη TypeScript εκτός συσκευασίας. Σήμερα ακόμη Το React διαθέτει μεθόδους για τη ρύθμιση της υποστήριξης TypeScript.

Το Deno σχεδιάστηκε με υποστήριξη TypeScript που περιλαμβάνεται για να ενισχύσει την παραγωγικότητά σας. Με την out-of-the-box υποστήριξη TypeScript, η Deno δεν έχει ακόμη και την ελάχιστη ρύθμιση που απαιτείται από το Node.js για να ορίσει την ανάπτυξη πληκτρολογημένου κώδικα JavaScript.

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

Linting to Generate Cleaner Code

Το Node.js διαθέτει μια μεγάλη ποικιλία γραμμών για να διαλέξετε. Υπάρχουν πολλές καλά ανεπτυγμένες επιλογές που μπορείτε να εγκαταστήσετε και να διαμορφώσετε γρήγορα και εύκολα. Όπως και στην περίπτωση του TypeScript, ωστόσο, θα χρειαστεί να κάνετε λίγη προσπάθεια για να ξεκινήσετε με την επιλογή τους.

Η Deno ακολούθησε μια ελαφρώς διαφορετική διαδρομή στη μορφοποίηση κώδικα, διαθέτοντας τη δική της ενσωματωμένη λύση για αρχεία .js, .ts και .md. Η εκτέλεση της εντολής "deno fmt" θα μορφοποιήσει αυτόματα όλα τα αρχεία στον τρέχοντα κατάλογο εργασίας.

Εάν δεν είστε λάτρης της προεπιλεγμένης επένδυσης, υπάρχει μια επιλογή να εγκαταστήσετε και να εκτελέσετε το σύστημα μορφοποίησης της επιλογής σας, όπως θα κάνατε με το Node. Η εναλλαγή συστημάτων είναι απλή, καθώς η ράβδος του Deno εκτελείται μέσω μιας εξωτερικής εντολής και όχι ως μέρος της προεπιλεγμένης διοχέτευσης κατασκευής.

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

Διαχείριση πακέτων

Ο διαχειριστής πακέτων κόμβων (npm) είναι πολύ γνωστός στους σύγχρονους προγραμματιστές. Με βάση την επιτυχία παρόμοιων συστημάτων όπως το Python's Pip και το Ruby's RubyGems, το npm κέρδισε γρήγορα δημοτικότητα.

Οι συνεχείς ανησυχίες οδηγούν στην ανάπτυξη ανταγωνιστικών μάνατζερ, όπως το pNPm και το Yarn. Υπάρχουν ορισμένες περιπτώσεις στις οποίες μπορείτε ακόμη και να επιλέξετε να εγκαταστήσετε και να χρησιμοποιήσετε πολλαπλοί διαχειριστές πακέτων με το Node.

Σήμερα, αν επιλέξετε να αναπτυχθείτε στο Node.js, δεν έχετε την δυνατότητα επιλογής όσον αφορά τη διαχείριση πακέτων. Το Node μπορεί να υπερηφανεύεται για ένα ακμάζον οικοσύστημα με πολλές επιλογές για πακέτα προς εγκατάσταση. Αυτή τη στιγμή υπάρχουν πάνω από 1,3 εκατομμύρια στο κύριο μητρώο npm.

Το Npm σάς επιτρέπει να δημοσιεύετε τα δικά σας πακέτα, που οδηγεί σε μια εκπληκτικά μεγάλη βιβλιοθήκη.

Η Deno ακολούθησε μια εντελώς διαφορετική προσέγγιση στη διαχείριση πακέτων. Δεν διαθέτει, ούτε απαιτεί, σύστημα διαχείρισης πακέτων. Αντίθετα, το Deno επιτρέπει την άμεση εισαγωγή εξωτερικών βιβλιοθηκών όχι μόνο από το σύστημα του προγραμματιστή, αλλά από οποιαδήποτε τοποθεσία που δέχεται αιτήματα HTTP.

Αυτό σας επιτρέπει να εισάγετε βιβλιοθήκες από το αποθετήριο της Deno ή οποιοδήποτε CDN στο διαδίκτυο, απευθείας από τη βάση του κώδικα τους.

Το επίσημο μητρώο πακέτων της Deno δεν είναι τόσο πλήρως ανεπτυγμένο όσο του Node, χάρη στην σχεδόν εννέα χρόνια αρχή του Node. Η δυνατότητα εισαγωγής βιβλιοθηκών από οπουδήποτε σας εμποδίζει να υποστείτε τις συνέπειες ενός οικοσυστήματος που δεν είχε ακόμη την ευκαιρία να μεγαλώσει σε πλήρες μέγεθος.

Συμμετοχή της Κοινότητας σε Node και Deno

Αρχικά κυκλοφόρησε το 2009 από τον Ryan Dahl, το Node είχε αρκετό χρόνο για να εμπλακεί η κοινότητα προγραμματιστών. Με πολλούς πρώιμους χρήστες και μια αρκετά μεγάλη βιβλιοθήκη πακέτων που είναι αποθηκευμένη στο επίσημο αποθετήριο και στη διάθεσή σας, το κοινό έχει πολλά να πει για την ανάπτυξη του Node.js.

Η ίδια η πλατφόρμα είναι εντελώς ανοιχτού κώδικα, που συντηρείται από το OpenJS Foundation και πολλούς συνεργάτες.

Το Deno κυκλοφόρησε το 2018, σχεδόν 9 χρόνια μετά το Node. Αναπτύχθηκε κυρίως από τον Ryan Dahl για να αντιμετωπίσει τις ανησυχίες και τις τύψεις που είχε με την εφαρμογή του Node. Σήμερα, το Deno είναι επίσης ανοιχτού κώδικα με άδεια MIT.

Με πολλούς συνεισφέροντες και ένα αυξανόμενο δικό του αποθετήριο, η Deno έχει δει άφθονο ενδιαφέρον από την κοινότητα.

Ανησυχίες απόδοσης των δύο πλαισίων

Για τους κωδικοποιητές που ενδιαφέρονται για τις σχετικές διαφορές απόδοσης μεταξύ των δύο πλαισίων, υπάρχει μικρή διαφορά μεταξύ των δύο. Ο προσαρμοσμένος κινητήρας του Deno γραμμένος σε Rust επικαλύπτει ένα βασικό πλαίσιο που εξακολουθεί να είναι ο κινητήρας V8. Τελικά, τόσο το Deno όσο και το Node είναι συγκρίσιμα σε όλες σχεδόν τις περιπτώσεις ως προς την απόδοση.

Αυτό φαίνεται να συμβαίνει ανεξάρτητα από το αν ο κώδικας που προκύπτει εκτελείται στον διακομιστή ή στον πελάτη. Καθώς οι αποδόσεις απόδοσης δεν λαμβάνονται υπόψη στην απόφαση, είστε ελεύθεροι να επιλέξετε το πλαίσιο με το οποίο αισθάνεστε πιο άνετα.

Ο Ryan Dahl, ο δημιουργός και των δύο πλαισίων, πρότεινε διάφορους λόγους για τη δημιουργία του Deno. Ενώ ανέφερε αρκετούς παράγοντες, από την αποτυχία να ενσωματωθούν σωστά οι υποσχέσεις σε πολλά API μέχρι το επιλεγμένο σύστημα κατασκευής του, η απόδοση δεν ήταν μέρος της διαδικασίας.

Node vs Deno: Ποια είναι η σωστή επιλογή;

Κάτω από την κουκούλα, τόσο το Node.js όσο και το Deno είναι εντυπωσιακά παρόμοια πλαίσια. Και οι δύο εκτελούν JavaScript χρησιμοποιώντας τον κινητήρα V8 με παρόμοιες επιδόσεις και δυνατότητες. Αν και υπάρχουν ορισμένες διαφορές στη σύνταξη, τη διαχείριση πακέτων και την ενσωματωμένη υποστήριξη, η επιλογή σας για το ποια θα χρησιμοποιήσετε βασίζεται σε μεγάλο βαθμό στην προτίμησή σας.

Το Node μπορεί να υπερηφανεύεται για ένα εκπληκτικά μεγάλο οικοσύστημα, αλλά το Deno σάς επιτρέπει να αντλείτε τις εξαρτήσεις σας από οποιαδήποτε πηγή. Τελικά, θα πρέπει να ρίξετε μια προσεκτική ματιά στο δικό σας στυλ ανάπτυξης και να καθορίσετε ποια πλατφόρμα είναι πιο κατάλληλη για εσάς.