Catégories
Astuces et Design

Apprendre 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 sonne 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 des défauts de conception dans Node. Les objectifs du projet sont de fournir un environnement de script 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 possible).

Fonctions de sécurité

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 permettre à un programme d'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, -autoriser-tout: 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ée dans les attaques de synchronisation et la prise d'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.
  • –Autoriser l'exécution: autorise l'exécution des 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.

Prise en charge de TypeScript de première classe

Comme je l'ai mentionné précédemment, Deno peut exécuter à la fois JavaScript et Manuscrit. 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 certaines fonctionnalités intéressantes pour les développeurs, telles que les importations de modules ES

Utilisation d'un code externe

Comme Ryan l'a mentionné dans son discours, 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 } from "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 le cache sous-commande:

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 standardisée et versionnée qui correspond au dépôt GitHub du module. Vous pouvez rechercher des packages par nom et voir une brève description, puis cliquer pour voir le fichier readme du package.

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 } from "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 assistants et utilitaires dont vous pourriez avoir besoin pour créer des applications en ligne de commande et basées sur HTTP:

  • archiver: modules pour travailler avec des fichiers tar
  • asynchrone: utilitaires asynchrones
  • octets: aides pour travailler avec des tableaux binaires
  • datetime: une aide pour analyser les chaînes de date dans Date objets
  • codage: encodeurs pour traiter les formats base32, binaire, CSV, TOML et YAML
  • drapeaux: un analyseur d'arguments en ligne de commande
  • fmt: un outil pour imprimer une sortie formatée
  • fs: aides pour travailler avec le système de fichiers
  • hacher: un module pour créer des hachages en 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
  • Journal: module de journalisation simple
  • mime: prend en charge les données en plusieurs parties
  • nœud: une couche de compatibilité (actuellement en cours) pour le code Node.js
  • chemin: utilitaire de manipulation de chemin
  • autorisations: les assistants vérifient et demandent les autorisations de sécurité
  • signal: aides pour la gestion des signaux de processus Deno
  • essai: 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

Installer Deno

Deno est livré sous la forme d'un exécutable unique sans dépendances. Vous pouvez télécharger un 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 passer à une version spécifique:

deno upgrade --version 1.0.1

L'avenir est prometteur

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.

Alors, devriez-vous oublier 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.

Fondations Deno

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.

Fondamentaux de Deno

Projets Deno

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *