Η πλατφόρμα Deno JavaScript είναι συμβατή με μονάδες NPM

Κυκλοφόρησε το Deno 1.28, ένα πλαίσιο για sandboxing εφαρμογών JavaScript και TypeScript που μπορεί να χρησιμοποιηθεί για τη δημιουργία χειριστών από την πλευρά του διακομιστή. Η πλατφόρμα έχει αναπτυχθεί από τον Ryan Dahl, τον δημιουργό του Node.js. Όπως το Node.js, το Deno χρησιμοποιεί τη μηχανή JavaScript V8, η οποία χρησιμοποιείται επίσης σε προγράμματα περιήγησης που βασίζονται στο Chromium. Ταυτόχρονα, το Deno δεν είναι ένα fork του Node.js, αλλά είναι ένα νέο έργο που δημιουργήθηκε από την αρχή. Ο κωδικός του έργου διανέμεται με την άδεια MIT. Οι εκδόσεις προετοιμάζονται για Linux, Windows και macOS.

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

Μια βασική αλλαγή στη νέα έκδοση είναι η σταθεροποίηση της συμβατότητας με πακέτα που φιλοξενούνται στο αποθετήριο NPM, η οποία επιτρέπει στην Deno να χρησιμοποιεί περισσότερες από 1.3 εκατομμύρια μονάδες που έχουν δημιουργηθεί για την πλατφόρμα Node.js. Για παράδειγμα, οι εφαρμογές που βασίζονται σε Deno μπορούν πλέον να χρησιμοποιούν λειτουργικές μονάδες μόνιμης πρόσβασης δεδομένων όπως τα Prisma, Mongoose και MySQL, καθώς και πλαίσια front-end όπως το React και το Vue. Ορισμένες λειτουργικές μονάδες NPM εξακολουθούν να παραμένουν ασύμβατες με το Deno, για παράδειγμα λόγω δεσμεύσεων σε στοιχεία περιβάλλοντος ειδικά για το Node.js, όπως το αρχείο package.json. Επίσης, δεν είναι ακόμη δυνατή η χρήση της εντολής "deno compile" με μονάδες NPM. Οι μελλοντικές εκδόσεις σχεδιάζουν να αντιμετωπίσουν αυτές τις ασυμβατότητες και περιορισμούς.

Η υποστήριξη για το παλαιότερα χρησιμοποιημένο σύστημα λειτουργικών μονάδων ECMAScript και το μοντέλο Web API της Deno διατηρείται στο ίδιο επίπεδο και το γνωστό σχήμα φόρτωσης που βασίζεται σε URL της Deno χρησιμοποιείται για την εισαγωγή λειτουργικών μονάδων NPM. Για πρόσβαση σε μονάδες NPM, υπάρχει ένα ειδικό πρόθεμα URL "npm:", το οποίο μπορεί να χρησιμοποιηθεί με τον ίδιο τρόπο όπως οι κανονικές μονάδες Deno. Για παράδειγμα, για να εισαγάγετε μια λειτουργική μονάδα NPM, μπορείτε να καθορίσετε το 'import { chalk } from "npm:chalk@5";', και να εκτελέσετε ένα σενάριο NPM από τη γραμμή εντολών - "deno run --allow-env --allow -διαβάστε npm:create- vite-extra."

Η χρήση πακέτων NPM στο Deno είναι πολύ πιο εύκολη από ό,τι στο Node.js, καθώς δεν υπάρχει ανάγκη προεγκατάστασης λειτουργικών μονάδων (οι ενότητες εγκαθίστανται κατά την πρώτη εκκίνηση της εφαρμογής), δεν υπάρχει αρχείο package.json και δεν υπάρχει προεπιλεγμένο node_modules κατάλογο (οι μονάδες αποθηκεύονται προσωρινά στον κοινόχρηστο κατάλογο, αλλά είναι δυνατή η επιστροφή της παλιάς συμπεριφοράς χρησιμοποιώντας την επιλογή "--node-modules-dir").

Οι εφαρμογές που βασίζονται σε NPM διατηρούν τη δυνατότητα χρήσης των προηγμένων δυνατοτήτων ελέγχου πρόσβασης, απομόνωσης και ευαίσθητων στην ασφάλεια της Deno. Για την αντιμετώπιση επιθέσεων μέσω αμφισβητήσιμων εξαρτήσεων, το Deno αποκλείει από προεπιλογή όλες τις προσπάθειες πρόσβασης στο σύστημα από εξαρτήσεις και εμφανίζει μια προειδοποίηση για προβλήματα που έχουν εντοπιστεί. Για παράδειγμα, όταν μια λειτουργική μονάδα προσπαθεί να αποκτήσει πρόσβαση εγγραφής στο /usr/bin/, θα εμφανιστεί ένα αίτημα επιβεβαίωσης για αυτήν τη λειτουργία: deno run npm:install-malware ⚠️ ┌ Deno αιτήματα πρόσβασης εγγραφής στο /usr/bin/. ├ Ζητήθηκε από το "install-malware" ├ Εκτελέστε ξανά με --allow-write για να παρακάμψετε αυτήν την προτροπή. └ Να επιτρέπεται; [y/n] (y = ναι, επιτρέπω· n = όχι, άρνηση) >

Οι βελτιώσεις εκτός NPM στη νέα έκδοση περιλαμβάνουν ενημέρωση του κινητήρα V8 για την έκδοση 10.9, αυτόματη ανίχνευση αρχείων με κλειδώματα, σταθεροποίηση των Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() και Deno API. .uid(), προσθέτοντας νέο ασταθές API Deno.Command() για την εκτέλεση εντολών (καθολική αντικατάσταση για Deno.spawn, Deno.spawnSync και Deno.spawnChild).

Κύρια χαρακτηριστικά του Deno:

  • Προεπιλεγμένη διαμόρφωση προσανατολισμένη στην ασφάλεια. Η πρόσβαση σε αρχεία, η δικτύωση και η πρόσβαση στις μεταβλητές περιβάλλοντος είναι απενεργοποιημένες από προεπιλογή και πρέπει να ενεργοποιηθούν ρητά. Οι εφαρμογές εκτελούνται από προεπιλογή σε απομονωμένα περιβάλλοντα sandbox και δεν μπορούν να έχουν πρόσβαση στις δυνατότητες του συστήματος χωρίς την παραχώρηση ρητών αδειών.
  • Ενσωματωμένη υποστήριξη για TypeScript πέρα ​​από JavaScript. Για τον έλεγχο τύπου και τη δημιουργία JavaScript, χρησιμοποιείται ο τυπικός μεταγλωττιστής TypeScript, ο οποίος οδηγεί σε πτώση της απόδοσης σε σύγκριση με την ανάλυση JavaScript στο V8.
  • Ο χρόνος εκτέλεσης έρχεται με τη μορφή ενός ενιαίου αυτόνομου εκτελέσιμου αρχείου ("deno"). Για να εκτελέσετε εφαρμογές χρησιμοποιώντας το Deno, χρειάζεται απλώς να κατεβάσετε ένα εκτελέσιμο αρχείο για την πλατφόρμα σας, μεγέθους περίπου 30 MB, το οποίο δεν έχει εξωτερικές εξαρτήσεις και δεν απαιτεί ειδική εγκατάσταση στο σύστημα. Επιπλέον, το deno δεν είναι μια μονολιθική εφαρμογή, αλλά είναι μια συλλογή από πακέτα Rust crate (deno_core, rusty_v8), τα οποία μπορούν να χρησιμοποιηθούν ξεχωριστά.
  • Κατά την εκκίνηση του προγράμματος, καθώς και για τη φόρτωση λειτουργικών μονάδων, μπορείτε να χρησιμοποιήσετε τη διεύθυνση URL. Για παράδειγμα, για να εκτελέσετε το πρόγραμμα welcome.js, μπορείτε να χρησιμοποιήσετε την εντολή "deno https://deno.land/std/examples/welcome.js". Ο κώδικας από εξωτερικούς πόρους λαμβάνεται και αποθηκεύεται προσωρινά στο τοπικό σύστημα, αλλά δεν ενημερώνεται ποτέ αυτόματα (η ενημέρωση απαιτεί ρητά την εκτέλεση της εφαρμογής με τη σημαία "--reload").
  • Αποτελεσματική επεξεργασία αιτημάτων δικτύου μέσω HTTP σε εφαρμογές· η πλατφόρμα έχει σχεδιαστεί για τη δημιουργία εφαρμογών δικτύου υψηλής απόδοσης.
  • Η δυνατότητα δημιουργίας καθολικών εφαρμογών Ιστού που μπορούν να εκτελεστούν τόσο σε Deno όσο και σε κανονικό πρόγραμμα περιήγησης ιστού.
  • Η παρουσία ενός τυπικού συνόλου μονάδων, η χρήση των οποίων δεν απαιτεί δέσμευση σε εξωτερικές εξαρτήσεις. Οι ενότητες από την τυπική συλλογή έχουν υποβληθεί σε πρόσθετο έλεγχο και δοκιμές συμβατότητας.
  • Εκτός από το χρόνο εκτέλεσης, η πλατφόρμα Deno λειτουργεί επίσης ως διαχειριστής πακέτων και σας επιτρέπει να έχετε πρόσβαση σε λειτουργικές μονάδες μέσω URL μέσα στον κώδικα. Για παράδειγμα, για να φορτώσετε μια λειτουργική μονάδα, μπορείτε να καθορίσετε στον κωδικό "εισαγωγή * ως αρχείο καταγραφής από το "https://deno.land/std/log/mod.ts". Τα αρχεία που λαμβάνονται από εξωτερικούς διακομιστές μέσω URL αποθηκεύονται προσωρινά. Η δέσμευση σε εκδόσεις λειτουργικών μονάδων καθορίζεται με τον καθορισμό των αριθμών έκδοσης μέσα στη διεύθυνση URL, για παράδειγμα, "https://unpkg.com/[προστασία μέσω email]/dist/liltest.js";
  • Η δομή περιλαμβάνει ένα ενσωματωμένο σύστημα επιθεώρησης εξάρτησης (την εντολή «deno info») και ένα βοηθητικό πρόγραμμα για τη μορφοποίηση κώδικα (deno fmt).
  • Όλα τα σενάρια εφαρμογών μπορούν να συνδυαστούν σε ένα αρχείο JavaScript.

Πηγή: opennet.ru

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