Comment utiliser le NPL.js REPL

L'auteur a sélectionné lesOpen Internet/Free Speech Fund pour recevoir un don dans le cadre du programmeWrite for DOnations.

introduction

Le Node.jsRead-Eval-Print-Loop (REPL) est un shell interactif qui traite les expressions Node.js. Le code JavaScript du shellreads que l'utilisateur entre,evaluit le résultat de l'interprétation de la ligne de code,prints le résultat à l'utilisateur etloops jusqu'à ce que l'utilisateur signale de quitter .

Le REPL est fourni avec chaque installation Node.js et vous permet de tester et d'explorer rapidement le code JavaScript au sein de l'environnement Node sans avoir à le stocker dans un fichier.

Conditions préalables

Pour compléter ce tutoriel, vous aurez besoin de:

[[step-1 -—- starting-and-stop-the-repl]] == Étape 1 - Démarrage et arrêt du REPL

Si vous avez installénode, vous avez également le REPL Node.js. Pour le démarrer, entrez simplementnode dans votre shell de ligne de commande:

node

Cela se traduit par l'invite REPL:

>

Le symbole> vous permet de savoir que vous pouvez saisir du code JavaScript pour être immédiatement évalué.

Pour un exemple, essayez d'ajouter deux nombres dans le REPL en tapant ceci:

> 2 + 2

Lorsque vous appuyez surENTER, le REPL évaluera l'expression et retournera:

4

Pour quitter la REPL, vous pouvez taper.exit, ou appuyer une fois surCTRL+D, ou appuyer deux fois surCTRL+C, ce qui vous ramènera à l'invite du shell.

Commençons et arrêtons rapidement. Voyons comment utiliser REPL pour exécuter du code JavaScript simple.

[[step-2 -—- executing-code-in-the-node-js-repl]] == Étape 2 - Exécution du code dans le REPL Node.js

Le REPL est un moyen rapide de tester le code JavaScript sans avoir à créer un fichier. Presque toutes les expressions JavaScript ou Node.js valides peuvent être exécutées dans le REPL.

Dans l’étape précédente, vous avez déjà essayé l’addition de deux nombres. Essayons maintenant la division. Pour ce faire, démarrez un nouveau REPL:

node

Dans l'invite, tapez:

> 10 / 5

Appuyez surENTER et la sortie sera2, comme prévu:

2

Le REPL peut également traiter des opérations sur des chaînes. Concatenate les chaînes suivantes dans votre REPL en tapant:

> "Hello " + "World"

Encore une fois, appuyez surENTER et l'expression de chaîne est évaluée:

'Hello World'

[.note] #Note: Vous avez peut-être remarqué que la sortie utilisait des guillemets simples au lieu de guillemets doubles. En JavaScript, les guillemets utilisés pour une chaîne n'affectent pas sa valeur. Si la chaîne que vous avez entrée utilise un guillemet simple, le REPL est suffisamment intelligent pour utiliser des guillemets doubles dans la sortie.
#

Fonctions d'appel

Lors de l’écriture de code Node.js, il est courant d’imprimer des messages via la méthode globaleconsole.log ou unfunction similaire. Tapez ce qui suit à l'invite:

> console.log("Hi")

Appuyez surENTER pour obtenir la sortie suivante:

Hi
undefined

Le premier résultat est la sortie deconsole.log, qui imprime un message dans le fluxstdout (l'écran). Étant donné queconsole.log imprime une chaîne au lieu de renvoyer une chaîne, le message s'affiche sans guillemets. Leundefined est la valeur de retour de la fonction.

Création de variables

Vous travaillez rarement avec des littéraux en JavaScript. La création d'une variable dans le REPL fonctionne de la même manière que l'utilisation des fichiers.js. Tapez ce qui suit à l'invite:

> let age = 30

Appuyer surENTER entraîne:

undefined

Comme auparavant, avecconsole.log, la valeur de retour de cette commande estundefined. La variableage sera disponible jusqu'à ce que vous quittiez la session REPL. Par exemple, vous pouvez multiplierage par deux. Tapez ce qui suit à l'invite et appuyez surENTER:

> age * 2

Le résultat est:

60

Étant donné que le REPL renvoie des valeurs, vous n’avez pas besoin d’utiliserconsole.log ou des fonctions similaires pour voir la sortie à l’écran. Par défaut, toute valeur renvoyée apparaîtra à l'écran.

Blocs multilignes

Les blocs de code multilignes sont également pris en charge. Par exemple, vous pouvez créer une fonction qui ajoute 3 à un nombre donné. Démarrez la fonction en tapant ce qui suit:

> const add3 = (num) => {

Ensuite, appuyer surENTER changera l'invite en:

...

La REPL a remarqué une accolade ouverte et suppose donc que vous écrivez plus d’une ligne de code, ce qui doit être mis en retrait. Pour faciliter la lecture, le REPL ajoute 3 points et un espace sur la ligne suivante, de sorte que le code suivant semble être en retrait.

Entrez les deuxième et troisième lignes de la fonction, une à la fois, en appuyant surENTER après chacune:

... return num + 3;
... }

Appuyez surENTER après l'accolade fermante pour afficher unundefined, qui est la «valeur de retour» de l'affectation de fonction à une variable. L'invite... a maintenant disparu et l'invite> renvoie:

undefined
>

Maintenant, appelezadd3() sur une valeur:

> add3(10)

Comme prévu, le résultat est:

13

Vous pouvez utiliser le REPL pour essayer des morceaux de code JavaScript avant de les inclure dans vos programmes. Le REPL inclut également des raccourcis pratiques pour faciliter ce processus.

[[step-3 -—- mastering-repl-shortcuts]] == Étape 3 - Mastering des raccourcis REPL

Le REPL fournit des raccourcis permettant de réduire le temps de codage lorsque cela est possible. Il conserve un historique de toutes les commandes entrées et nous permet de les parcourir et de répéter une commande si nécessaire.

Par exemple, entrez la chaîne suivante:

"The answer to life the universe and everything is 32"

Cela se traduit par:

'The answer to life the universe and everything is 32'

Si nous souhaitons modifier la chaîne et changer le «32» en «42», à l'invite, utilisez la touche fléchéeUP pour revenir à la commande précédente:

> "The answer to life the universe and everything is 32"

Déplacez le curseur vers la gauche, supprimez3, entrez4 et appuyez à nouveau surENTER:

'The answer to life the universe and everything is 42'

Continuez à appuyer sur la touche fléchéeUP et vous remonterez plus loin dans votre historique jusqu'à la première commande utilisée dans la session REPL en cours. En revanche, appuyer surDOWN effectuera une itération vers les commandes les plus récentes de l'historique.

Lorsque vous avez terminé de manœuvrer dans l'historique de vos commandes, appuyez plusieurs fois surDOWN jusqu'à ce que vous ayez épuisé votre historique de commandes récent et que vous voyiez à nouveau l'invite.

Pour obtenir rapidement la dernière valeur évaluée, utilisez le caractère de soulignement. À l'invite, tapez_ et appuyez surENTER:

> _

La chaîne précédemment saisie apparaîtra à nouveau:

'The answer to life the universe and everything is 42'

Le REPL comporte également une complétion automatique pour les fonctions, les variables et les mots-clés. Si vous souhaitez trouver la racine carrée d'un nombre à l'aide de la fonctionMath.sqrt, entrez les premières lettres, comme ceci:

> Math.sq

Appuyez ensuite sur la toucheTAB et le REPL complétera automatiquement la fonction:

> Math.sqrt

Lorsqu'il existe plusieurs possibilités d'auto-complétion, toutes les options disponibles vous sont proposées. Pour un exemple, entrez simplement:

> Math.

Et appuyez deux fois surTAB. Vous êtes accueilli avec les autocomplétions possibles:

> Math.
Math.__defineGetter__      Math.__defineSetter__      Math.__lookupGetter__
Math.__lookupSetter__      Math.__proto__             Math.constructor
Math.hasOwnProperty        Math.isPrototypeOf         Math.propertyIsEnumerable
Math.toLocaleString        Math.toString              Math.valueOf

Math.E                     Math.LN10                  Math.LN2
Math.LOG10E                Math.LOG2E                 Math.PI
Math.SQRT1_2               Math.SQRT2                 Math.abs
Math.acos                  Math.acosh                 Math.asin
Math.asinh                 Math.atan                  Math.atan2
Math.atanh                 Math.cbrt                  Math.ceil
Math.clz32                 Math.cos                   Math.cosh
Math.exp                   Math.expm1                 Math.floor
Math.fround                Math.hypot                 Math.imul
Math.log                   Math.log10                 Math.log1p
Math.log2                  Math.max                   Math.min
Math.pow                   Math.random                Math.round
Math.sign                  Math.sin                   Math.sinh
Math.sqrt                  Math.tan                   Math.tanh
Math.trunc

Selon la taille de l'écran de votre shell, le résultat peut être affiché avec un nombre différent de lignes et de colonnes. Il s'agit d'une liste de toutes les fonctions et propriétés disponibles dans le moduleMath.

Appuyez surCTRL+C pour accéder à une nouvelle ligne dans l'invite sans exécuter ce qui se trouve dans la ligne actuelle.

Connaître les raccourcis REPL vous rend plus efficace lors de son utilisation. Cependant, il y a une autre chose que REPL offre pour une productivité accrue -The REPL commands.

[[step-4 -—- using-repl-commands]] == Étape 4 - Utilisation des commandes REPL

Le REPL a des mots clés spécifiques pour aider à contrôler son comportement. Chaque commande commence par un point..

.Aidez-moi

Pour lister toutes les commandes disponibles, utilisez la commande.help:

> .help

Il n’en existe pas beaucoup, mais ils sont utiles pour faire avancer les choses dans le REPL:

.break    Sometimes you get stuck, this gets you out
.clear    Alias for .break
.editor   Enter editor mode
.exit     Exit the repl
.help     Print this help message
.load     Load JS from a file into the REPL session
.save     Save all evaluated commands in this REPL session to a file

Press ^C to abort current expression, ^D to exit the repl

Si jamais vous oubliez une commande, vous pouvez toujours vous référer à.help pour voir ce qu'elle fait.

.break/.clear

En utilisant.break ou.clear, il est facile de quitter une expression multiligne. Par exemple, commencez unfor loop comme suit:

> for (let i = 0; i < 100000000; i++) {

Pour sortir de la saisie d'autres lignes, au lieu d'entrer la suivante, utilisez la commande.break ou.clear pour sortir:

... .break

Vous verrez une nouvelle invite:

>

Le REPL passera à une nouvelle ligne sans exécuter de code, similaire à la pression deCTRL+C.

.save et .load

La commande.save stocke tout le code que vous avez exécuté depuis le démarrage de la REPL, dans un fichier. La commande.load exécute tout le code JavaScript à partir d'un fichier à l'intérieur du REPL.

Quittez la session en utilisant la commande.exit ou avec le raccourciCTRL+D. Maintenant, démarrez une nouvelle REPL avecnode. Maintenant, seul le code que vous êtes sur le point d'écrire sera enregistré.

Créez un tableau avec des fruits:

> fruits = ['banana', 'apple', 'mango']

Dans la ligne suivante, le REPL affichera:

[ 'banana', 'apple', 'mango' ]

Enregistrez cette variable dans un nouveau fichier,fruits.js:

> .save fruits.js

Nous sommes accueillis avec la confirmation:

Session saved to: fruits.js

Le fichier est enregistré dans le même répertoire que celui dans lequel vous avez ouvert le REPL Node.js. Par exemple, si vous avez ouvert le fichier Node.js REPL dans votre répertoire personnel, votre fichier sera enregistré dans votre répertoire personnel.

Quittez la session et démarrez une nouvelle REPL avecnode. À l'invite, chargez le fichierfruits.js en entrant:

> .load fruits.js

Cela se traduit par:

fruits = ['banana', 'apple', 'mango']

[ 'banana', 'apple', 'mango' ]

La commande.load lit chaque ligne de code et l'exécute, comme prévu d'un interpréteur JavaScript. Vous pouvez maintenant utiliser la variablefruits comme si elle était disponible en permanence dans la session en cours.

Tapez la commande suivante et appuyez surENTER:

> fruits[1]

Le REPL générera:

'apple'

Vous pouvez charger n'importe quel fichier JavaScript avec la commande.load, pas seulement les éléments que vous avez enregistrés. Voyons rapidement en ouvrant votre éditeur de code préféré ounano, un éditeur de ligne de commande, et créons un nouveau fichier appelépeanuts.js:

nano peanuts.js

Maintenant que le fichier est ouvert, tapez ce qui suit:

console.log('I love peanuts!');

Enregistrez et quittez nano en appuyant surCTRL+X.

Dans le même répertoire où vous avez enregistrépeanuts.js, démarrez Node.js REPL avecnode. Chargezpeanuts.js dans votre session:

> .load peanuts.js

La commande.load exécutera l'instructionconsole unique et affichera la sortie suivante:

console.log('I love peanuts!');

I love peanuts!
undefined
>

Lorsque votre utilisation de REPL est plus longue que prévu, ou que vous pensez avoir un extrait de code intéressant à partager ou à explorer plus en profondeur, vous pouvez utiliser les commandes.save et.load pour rendre ces deux objectifs possibles.

Conclusion

Le REPL est un environnement interactif qui vous permet d'exécuter du code JavaScript sans avoir à l'écrire dans un fichier.

Vous pouvez utiliser le REPL pour essayer le code JavaScript d'autres tutoriels: