Fermer

septembre 3, 2020

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.

 Premiers pas avec Deno "title =" Premiers pas avec Deno Banner "data-displaymode =" Original "/></p data-recalc-dims=

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 tar
  • async utilitaires async
  • octets aides pour manipuler des tranches d'octets
  • datetime analyse de la date et de l'heure
  • encodage encodage / décodage pour divers formats
  • indicateurs analyse des indicateurs de ligne de commande
  • fmt formatage et impression
  • fs API du système de fichiers [19659043] hash crypto lib
  • http serveur HTTP
  • io I / O lib
  • log utilitaires de journalisation
  • mime prise en charge des données en plusieurs parties [19659043] node Couche de compatibilité Node.js
  • chemin manipulation de chemin
  • ws 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 help 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