Tout ce que vous devez savoir pour démarrer avec Deno

Deno est un runtime simple, moderne et sécurisé pour JavaScript et TypeScript qui utilise V8 et est construit dans Rust. Récemment, Deno 1.0.5 est sorti, qui est une version stable du runtime. Cet article est le premier d'une série définissant le runtime.
Deno n'est pas si nouveau, comme il a été annoncé pour la première fois en 2018, mais il commence à gagner du terrain, alors j'ai pensé que ce serait le moment idéal pour écrivez à ce sujet, considérant que cela pourrait devenir la prochaine grande chose pour les développeurs JavaScript.
Cependant, cela ne signifie pas que Node.js sera balayé sous le tapis. Méfiez-vous des gens qui disent que Node.js est mort ou que Deno est là pour le remplacer entièrement. Je n'accepte pas cette opinion. Ryan Dahl, le créateur de Deno et Node.js, l'a dit lors d'une conférence de 2019 et je cite: "Node.js ne va nulle part." Il a également ajouté: " Deno n'est pas encore prêt pour la production. "
Dans cet article, nous discuterons de l'installation de Deno, des principes de base, des fonctionnalités, de la bibliothèque standard, etc. Tout ce que vous apprendrez ici vous suffit pour rejoindre le train Deno et profiter de ce qu'il promet aux développeurs JavaScript.
Qu'est-ce que Deno?
Cela dit, plongeons directement dans la grande question: Qu'est-ce que Deno? Deno est un moteur d'exécution pour JavaScript et TypeScript basé sur le moteur JavaScript V8 et le langage de programmation Rust . Il a été créé par Ryan Dahl, le créateur original de Node.js, et se concentre sur la productivité. Il a été annoncé par Dahl en 2018 lors de son conférence "10 choses que je regrette à propos de Node.js".
Quand j'ai découvert Deno et le fait qu'il a été créé par le créateur de Node.js, je eu ce sentiment qu'il doit y avoir un changement significatif, en particulier dans la conception, donc je pense que nous devrions commencer à aller
Fonctionnalités Deno
Voici une liste de quelques fonctionnalités de Deno:
JavaScript moderne : Node.js a été créé en 2009, et depuis lors, JavaScript a obtenu un beaucoup de mises à jour et d'améliorations. Ainsi, Deno, comme prévu, tire parti d'un JavaScript plus moderne.
Attente de premier niveau : Normalement, lorsque vous utilisez async / await dans Node.js, vous devez envelopper vos attentes dans une fonction asynchrone, et vous doivent l'étiqueter comme asynchrone. Deno permet d'utiliser la fonction await dans la portée globale sans avoir à l'envelopper dans une fonction asynchrone, ce qui est une fonctionnalité intéressante.
Prise en charge de Typescript prête à l'emploi : C'est ma deuxième fonctionnalité préférée – là n'est rien de plus amusant que d'avoir un peu plus de contrôle sur vos types de projets. C'est la raison pour laquelle j'ai commencé à construire la plupart de mes projets en Go.
Test intégré : Deno a un runner de test intégré que vous pouvez utiliser pour les tests Code JavaScript ou TypeScript
Un seul fichier exécutable : Si vous avez utilisé Golang, l'idée de ne livrer qu'un seul fichier exécutable vous sera familière. Ceci est maintenant présent en JavaScript avec l'aide de Deno. Dites adieu au téléchargement de centaines de fichiers pour configurer votre environnement de développement.
Système de modules repensé : C'est ma fonction préférée:, Deno n'a pas de fichier package.json, ni d'énormes collections de node_modules. Son gestionnaire de paquets est livré dans le même exécutable, récupérant toutes les ressources pour vous. Les modules sont chargés sur l'application à l'aide d'URL. Cela aide à supprimer la dépendance à un registre centralisé comme npm pour Node.js.
Sécurité : Avec Deno, un développeur peut donner l'autorisation aux scripts en utilisant des indicateurs comme – allow-net et – autoriser l'écriture . Deno propose une couche de sécurité sandbox via des autorisations. Un programme peut uniquement accéder aux autorisations définies sur l'exécutable comme indiqué par l'utilisateur. Vous vous demandez probablement: "Comment saurai-je quels indicateurs je dois ajouter pour exécuter le serveur?" Ne t'inquiète pas; vous recevrez un message dans le journal de la console vous demandant d'ajouter un indicateur donné. Voici une liste des indicateurs:
- allow-env
autorise l'accès à l'environnement- allow-hrtime
permet une mesure du temps en haute résolution- allow-net =
autoriser l'accès au réseau- allow-plugin
autoriser le chargement des plugins- allow-read =
autoriser l'accès en lecture au système de fichiers- allow-run
autoriser l'exécution de sous-processus] - allow-write =
autorise l'accès en écriture au système de fichiers- allow-all
autorise toutes les autorisations (comme-A
)
Node.js est-il mort?
Non, mais c'est ce que j'ai à dire à propos de cette comparaison constante entre Node et Deno. Je pense que vous devriez avoir l'esprit ouvert, suivre le message et vivre une expérience de première main. En fin de compte, venez à votre conclusion laquelle convient le mieux à votre style. Une chose est sûre, Deno atteindra le niveau Node.js avec l'attention qu'il reçoit récemment, et ce sera un successeur de Node.js.
«Pour certaines applications, Deno peut être un bon choix aujourd'hui, pour d'autres pas encore. Cela dépendra des exigences. Nous voulons être transparents sur ces limitations pour aider les gens à prendre des décisions éclairées lorsqu'ils envisagent d'utiliser Deno. » – Ryan Dahl.
Devrais-je apprendre Deno?
Si vous connaissez déjà Node.js et que vous aimez TypeScript , ou vous connaissez tout autre langage côté serveur, je vais vous donner un grand feu vert. Mais, si vous commencez à apprendre la programmation côté serveur et que vous souhaitez utiliser JavaScript, je vous conseillerai d’apprendre Node.js avant d’apprendre Deno – de cette façon, vous apprécierez encore plus Deno.
Standard Library
] Deno est livré avec un ensemble de bibliothèques standard qui sont auditées par l'équipe principale, par exemple http, serveur, fs, etc. Et les modules, comme indiqué précédemment, sont importés à l'aide d'URL, ce qui est super cool. Un module peut être importé, comme indiqué ci-dessous:
import {serve} depuis "http://deno.land/std/http/server.ts"
Voici une liste des bibliothèques standard de Deno:
archive
utilitaires d'archive tarasync
utilitaires asyncoctets
aides pour manipuler des tranches d'octetsdatetime
analyse de la date et de l'heureencodage
encodage / décodage pour divers formatsindicateurs
analyse des indicateurs de ligne de commandefmt
formatage et impressionfs
API du système de fichiers [19659043] hash crypto libhttp
serveur HTTPio
I / O liblog
utilitaires de journalisationmime
prise en charge des données en plusieurs parties [19659043] node Couche de compatibilité Node.jschemin
manipulation de cheminws
websockets
Installer Deno
Il existe deux façons d'installer Deno sur votre machine.
Utilisation du shell (macOS et Linux):
$ curl -fsSL https://deno.land/x/install/install.sh | sh
Utilisation de PowerShell (Windows):
$ iwr https://deno.land/x/install/install.ps1 -useb | iex
Utilisation de Scoop (Windows):
$ scoop install deno
Utilisation de Chocolatey (Windows):
$ choco install deno
Utilisation de Homebrew (macOS):
$ brew install deno
Utilisation de Cargo (Windows, macOS, Linux):
$ cargo install deno
J'utilise Windows, j'ai donc installé le mien avec PowerShell:
PS C: Users Codak> iwr https://deno.land/x/install/install.ps1 -useb | iex
Deno a été installé avec succès dans C: Users Codak .deno bin deno.exe
Exécutez 'deno --help' pour commencer
Commande Deno
Pour accéder à la commande deno
voici le support que vous pouvez obtenir en utilisant deno --help
:
PS C: Users Codak> deno - aide
deno 1.0.1
Un runtime JavaScript et TypeScript sécurisé
Documents: https://deno.land/manual
Modules: https://deno.land/std/ https://deno.land/x/
Bogues: https://github.com/denoland/deno/issues
Pour démarrer le REPL:
deno
Pour exécuter un script:
deno exécuter https://deno.land/std/examples/welcome.ts
Pour évaluer le code dans le shell:
deno eval "console.log (30933 + 404)"
USAGE:
deno [OPTIONS] [SUBCOMMAND]
OPTIONS:
-h, --help
Imprime les informations d'aide
-L, --log-level
Définir le niveau de journalisation [possible values: debug, info]
-q, --quiet
Supprimer la sortie de diagnostic
Par défaut, les sous-commandes affichent des messages de diagnostic lisibles par l'homme sur stderr.
Si l'indicateur est défini, limitez ces messages aux erreurs.
-V, --version
Imprime les informations de version
SOUS-COMMANDES:
regrouper le module Bundle et les dépendances dans un seul fichier
cache Cache les dépendances
complétions Générer des complétions shell
doc Afficher la documentation d'un module
script Eval Eval
Fichiers source au format fmt
help Imprime ce message ou l'aide de la ou des sous-commandes données
info Afficher les informations sur le cache ou les informations relatives au fichier source
installer le script d'installation en tant qu'exécutable
repl Lire la boucle d'impression d'évaluation
run Exécuter un programme avec un nom de fichier ou une URL vers le module
test Exécuter des tests
types Imprimer les déclarations TypeScript à l'exécution
mise à niveau Mettre à niveau l'exécutable deno vers une version donnée
VARIABLES D'ENVIRONNEMENT:
DENO_DIR Définit le répertoire de base de deno (par défaut $ HOME / .deno)
DENO_INSTALL_ROOT Définit le répertoire de sortie de l'installation de deno
(par défaut $ HOME / .deno / bin)
NO_COLOR Défini pour désactiver la couleur
Adresse proxy HTTP_PROXY pour les requêtes HTTP
(téléchargement de modules, récupération)
HTTPS_PROXY Idem mais pour HTTPS
La section SUBCOMMANDS liste les commandes que nous pouvons exécuter. Vous pouvez exécuter deno
pour obtenir une documentation supplémentaire spécifique pour la commande, par exemple deno bundle --help
.
Nous pouvons accéder au REPL (Lire Evaluate Print Loop ) en utilisant la commande deno. Dans le REPL, nous pouvons écrire du JavaScript normal, par exemple, pour ajouter des nombres ou attribuer une valeur à une variable et afficher la valeur:
$ deno
Deno 1.0.0
Quitter avec ctrl + c ou fermer ()
> 1 + 1
2
> const x = 100
indéfini
> x
100
>
Parlons de deux commandes importantes dans la section SOUS-COMMANDES :
1. Commande Run
La commande run
est utilisée pour exécuter un script, qu'il soit local ou à l'aide d'une URL. Pour présenter un exemple, nous allons exécuter une URL de script trouvée dans la section des exemples de bibliothèque standard de Deno sur le site Web officiel de Deno appelé welcome.ts
.
$ deno run https://deno.land/std/examples/welcome.ts
Téléchargez https://deno.land/std/examples/welcome.ts
Avertissement Utilisation implicite de la branche master https://deno.land/std/examples/welcome.ts
Compilez https://deno.land/std/examples/welcome.ts
>> Bienvenue à Deno ?
La sortie du script est Bienvenue à Deno
. Vous pouvez jeter un œil au code qui est exécuté en ouvrant l'URL que nous avons passée à run
dans le navigateur.
Examinons un autre exemple qui générera une erreur si nous n'ajoutons pas d'autorisation. Si vous vous souvenez plus tôt, nous avons parlé de la sécurité de Deno et de la façon dont nous devons ajouter des indicateurs pour donner accès aux scripts, car Deno exécute chaque script dans un bac à sable.
$ deno run https://deno.land/std/http /file_server.ts
Téléchargez https://deno.land/std/http/file_server.ts
Compilez https://deno.land/std/http/file_server.ts
erreur: Permission non interceptéeDenied: accès en lecture à "C: Users Codak", réexécutez avec l'indicateur --allow-read
à unwrapResponse ($ deno $ / ops / dispatch_json.ts: 43: 11)
à Object.sendSync ($ deno $ / ops / dispatch_json.ts: 72: 10)
à cwd ($ deno $ / ops / fs / dir.ts: 5: 10)
à Module.resolve (https://deno.land/std/path/posix.ts:27:17)
à https://deno.land/std/http/file_server.ts:39:22
Ajoutons les indicateurs requis et réexécutons le code. Les indicateurs sont ajoutés immédiatement après deno run
.
$ deno run --allow-read --allow-net https://deno.land/std/http/file_server.ts >> Serveur HTTP écoute sur http://0.0.0.0:4507/
Maintenant que notre script file_server fonctionne parfaitement, vous pouvez le tester avec localhost: 4507 /
.
2. Commande d'installation
La commande install
est utilisée pour installer le script en tant qu'exécutable. Nous allons utiliser le script file_server
que nous avons exécuté plus tôt, mais cette fois nous allons l'installer.
$ deno install --allow-read --allow-net https: // deno. land / std / http / file_server.ts
Avertissement Utilisation implicite de la branche master https://deno.land/std/http/file_server.ts
Téléchargez https://deno.land/std/path/mod.ts
Compilez https://deno.land/std/http/file_server.ts
>> ✅ File_server installé avec succès
C: Users . Deno bin file_server.cmd
Le fichier sera téléchargé et sauvegardé dans mon répertoire de base C: Users username .deno bin file_server.cmd
. Si vous utilisez un mac, vous pouvez le trouver dans /Users/username/.deno/bin ''/file_server
.
Pour exécuter le fichier, accédez au dossier du répertoire de base et exécutez le nom de le fichier file_server
et le serveur démarrera.
$ C: Users Codak .deno bin> file_server
>> Serveur HTTP en écoute sur http://0.0.0.0:4507/
Cela fonctionnera également si vous exécutez simplement file_server
sans accéder au dossier parent:
$ file_server
Formatage du code
En tant que développeur Go, j'adore la commande go fmt
utilisée pour formater automatiquement le code Go; avec Node.js, vous utilisez probablement un package tiers comme Beautify ou Prettier. Deno est livré avec une commande deno fmt
tout comme Go, qui formate automatiquement le script et ajoute des points-virgules s'il est omis n'importe où.
$ deno fmt index.ts
Conclusion
Jusqu'à présent, nous avons touché certains aspects importants de Deno pour avoir un aperçu de ce que Deno a à offrir. Je vais laisser quelques ressources ici pour en savoir plus:
Encore une fois, si vous êtes déjà un développeur côté serveur, je vous recommande vivement de consulter Deno afin que vous puissiez voir par vous-même ce que vous en pensez. Si vous êtes nouveau côté serveur, commencez peut-être par Node.js afin de mieux comprendre ce que l'expérience Deno signifiera pour vous.
Source link