Fermer

septembre 1, 2020

Guide Deno: un environnement d'exécution JavaScript et TypeScript sécurisé


Mai 2020 a vu la sortie de Deno 1.0, et c'est un sujet de conversation assez populaire. Si vous vous demandez de quoi il s'agit, vous êtes au bon endroit!

Dans cet article, j'espère vous donner un aperçu de ce qu'est Deno. Nous allons examiner ses principales fonctionnalités et vous demander pourquoi vous voudrez peut-être commencer à apprendre ce nouvel outil.

Qu'est-ce que Deno?

Alors, qu'est-ce que c'est Deno et pourquoi a-t-il été créé? C'est un environnement d'exécution JavaScript et TypeScript, ce qui signifie que vous pouvez écrire des programmes dans l'un ou l'autre langage et les exécuter à partir de la ligne de commande. Contrairement à JavaScript exécuté dans un navigateur, les programmes Deno peuvent accéder aux ressources de l'ordinateur hôte, telles que le système de fichiers et les variables d'environnement.

Si vous connaissez Node.js et que vous pensez que Deno semble assez similaire, vous avez raison. Deno est l’idée originale du créateur de Node, Ryan Dahl, qui a créé Deno pour remédier à ce qu’il considère comme les défauts de conception de Node . Les objectifs du projet sont de fournir un environnement de script qui est sécurisé par défaut, qui traite TypeScript comme un langage de première classe, et qui soit aussi compatible avec les navigateurs que possible (lorsque cela est pratique).

Security Features

Deno est conçu pour être sécurisé hors de la boîte. Tout le code est exécuté dans un bac à sable sécurisé par défaut, ce qui signifie que vous devez donner une autorisation explicite pour autoriser un programme à accéder au réseau ou au système de fichiers.

Les programmes peuvent recevoir des autorisations avec les indicateurs de ligne de commande suivants:

  • -A, –allow-all : autorise toutes les autorisations (désactive toutes les sécurités).
  • –allow-env : permet d'obtenir et de définir des variables d'environnement.
  • –allow-hrtime : permet une mesure du temps à haute résolution (peut être utilisé pour chronométrer les attaques et les empreintes digitales).
  • –allow-net = : autorise l'accès au réseau. Prend éventuellement une liste blanche de domaines séparés par des virgules.
  • –allow-plugin : autorise le chargement des plugins (fonction instable).
  • –allow-read = : autorise l'accès en lecture au système de fichiers. Prend éventuellement une liste blanche de répertoires ou de fichiers séparés par des virgules.
  • –allow-run : autorise l'exécution de sous-processus.
  • –allow-write = : autorise l'accès en écriture au système de fichiers. Prend éventuellement une liste blanche de répertoires ou de fichiers séparés par des virgules.

Support TypeScript de première classe

Comme je l'ai mentionné plus tôt, Deno peut exécuter à la fois JavaScript et TypeScript. De plus, il prend en charge TypeScript en tant que langage de première classe. Cela signifie qu'il peut charger et exécuter votre code TypeScript sans aucune étape de construction supplémentaire. Il n'est pas nécessaire de configurer des outils supplémentaires pour transpiler d'abord votre code en JavaScript.

Bien sûr, comme TypeScript est un sur-ensemble de JavaScript moderne, vous pouvez également écrire votre code dans le bon vieux JS si vous le souhaitez! Deno prend en charge quelques fonctionnalités intéressantes pour les développeurs telles que les importations de modules ES

Utilisation de code externe

Comme Ryan l'a mentionné dans son exposé, l'un de ses objectifs pour Deno était d'éviter le besoin d'un gestionnaire de paquets. Contrairement aux environnements d'exécution / langages tels que Node.js et PHP (qui utilisent respectivement les gestionnaires de packages npm et composer), il n'y a pas de gestionnaire de packages pour Deno.

Au lieu de cela, les packages externes sont importés directement via une URL. :

 import {Client} de "https://deno.land/x/mysql@2.2.0/mod.ts";

La ​​première fois que vous exécutez votre script, Deno récupérera, compilera et mettra en cache toutes les importations afin que les démarrages suivants soient rapides comme l'éclair. Évidemment, il y a des moments où vous voudrez peut-être le forcer à récupérer les importations, et vous pouvez le faire avec la sous-commande cache :

 deno cache --reload my_module.ts

Hébergement de packages

Bien que Deno ne fournisse pas de registre de packages en tant que tel, il existe une liste de modules tiers disponibles . Le service fournit une URL normalisée et versionnée qui correspond au dépôt GitHub du module. Vous pouvez rechercher des paquets par nom et voir une brève description, puis cliquer pour voir le fichier readme du paquet.

La bibliothèque standard

Deno fournit une bibliothèque standard – vaguement basée sur celle de Golang – qui fournit un ensemble de modules standard de haute qualité sans dépendances externes.

Les packages de la bibliothèque standard ne sont pas installés avec Deno. Au contraire, ils sont disponibles en ligne et associés, comme nous l'avons vu dans la section précédente. Les modules sont versionnés, ce qui vous permet d'épingler votre code à l'utilisation d'une version spécifique:

 import {copy} de "https://deno.land/std@0.50.0/fs/copy.ts";

Cela signifie que tout code que vous écrivez et qui repose sur un module de la bibliothèque standard devrait continuer à fonctionner dans les versions futures.

La bibliothèque comprend divers helpers et utilitaires dont vous pourriez avoir besoin pour construire à la fois la ligne de commande et HTTP applications:

  • archive : modules pour travailler avec des fichiers tar
  • async : utilitaires async
  • octets : helpers pour travailler avec des tableaux binaires
  • datetime : un assistant pour analyser les chaînes de date en objets Date
  • encodage : encodeurs pour traiter les formats base32, binaire, CSV, TOML et YAML
  • flags : un analyseur d'arguments en ligne de commande [19659010] fmt : un outil pour imprimer une sortie formatée
  • fs : des aides pour travailler avec le système de fichiers
  • hash : un module pour créer des hachages utilisant une variété d'algorithmes
  • http : créer des serveurs HTTP et de fichiers, et manipuler les cookies
  • io : utilitaires pour l'entrée / sortie de chaîne
  • log : module de journalisation simple
  • mime : prend en charge les données en plusieurs parties
  • node : une couche de compatibilité (actuellement en cours) pour Node.js code
  • chemin : utilitaire de manipulation de chemin
  • permissions : aides pour vérifier et demander les autorisations de sécurité
  • signal : aides pour gérer les signaux de processus Deno
  • tests : assertions de test à utiliser avec le lanceur de test intégré de Deno
  • uuid : utilitaires de génération et de validation des UUID
  • ws : aides pour la création de clients et serveurs WebSocket

Installation de Deno [19659004] Deno est fourni comme un exécutable unique sans dépendances. Vous pouvez télécharger un fichier binaire à partir de la page des versions ou l'installer à l'aide des programmes d'installation ci-dessous:

Shell (macOS, Linux):

 curl -fsSL https://deno.land/x/ install / install.sh | sh

PowerShell (Windows):

 iwr https://deno.land/x/install/install.ps1 -useb | iex

Homebrew (macOS):

 brew install deno

Mise à jour

Une fois installé, Deno peut également se mettre à niveau vers la dernière version, en utilisant la commande suivante:

 deno upgrade

Ou, vous pouvez monter / descendre à une version spécifique:

 deno upgrade --version 1.0.1

The Future is Bright

Le manuel Deno suggère qu'il «est un excellent remplacement pour les scripts utilitaires qui peuvent avoir été historiquement écrits avec Bash ou Python». Bien que cela soit certainement vrai, je m'attendrais à le voir de plus en plus utilisé pour les mêmes cas d'utilisation où Node.js est actuellement populaire. Il existe déjà un certain nombre de frameworks de type Express / Koa, vous permettant de créer des API REST de type sécurisé, ainsi qu'un nombre croissant de modules tiers devenant disponibles.

Donc, si vous oubliez Node.js et commencer à apprendre Deno? L'opinion actuelle dans l'industrie est que Node.js n'est pas sur le point de disparaître de sitôt, mais Deno est définitivement une technologie à surveiller.

Deno Foundations

Apprenez Deno avec notre collection Deno Foundations. Vous trouverez ici toute notre couverture Deno telle que nous la publions, organisée de manière à vous aider le plus en tant que débutant.

Deno Fundamentals




Source link