_著者はhttps://www.brightfunds.org/funds/open-internet-free-speech[Open Internet / Free Speech Fund]を選択してhttps://do.co/w4do-ctaの一部として寄付を受け取りました[寄付のために書く]プログラム。

前書き

Node.js Read-Eval-Print-Loop(REPL)は、Node.js式を処理する対話型シェルです。 シェルは、ユーザーが入力したJavaScriptコードを*読み取り*、コード行の解釈結果を評価し、ユーザーに結果を*印刷*し、ユーザーが終了を指示するまで*ループ*します。

REPLはすべてのNode.jsインストールにバンドルされており、ファイルに保存せずにNode環境内でJavaScriptコードをすばやくテストおよび探索できます。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • 開発マシンにインストールされたNode.js。 このチュートリアルでは、バージョン10.16.0を使用します。 これをmacOSまたはUbuntu 18.04にインストールするには、https://www.digitalocean.com/community/tutorials/how-to-install-node-js-and-create-a-local-development-environment-onの手順に従います-macos [macOSでNode.jsをインストールしてローカル開発環境を作成する方法]またはhttps://www.digitalocean.com/community/tutorials/how-to-install-node-の「PPAを使用してインストールする」セクションjs-on-ubuntu-18-04 [Ubuntu 18.04にNode.jsをインストールする方法]。

  • JavaScriptの基本的な知識(https://www.digitalocean.com/community/tutorial_series/how-to-code-in-javascript[JavaScriptのコーディング方法])

ステップ1-REPLの開始と停止

`+ node `がインストールされている場合、Node.js REPLもあります。 起動するには、コマンドラインシェルで「 node +」と入力するだけです:

node

これにより、REPLプロンプトが表示されます。

>

`+> +`シンボルは、JavaScriptコードを入力してすぐに評価できることを知らせます。

たとえば、次のように入力して、REPLに2つの数値を追加してみてください。

> 2 + 2

`+ ENTER +`を押すと、REPLは式を評価して返します:

4

REPLを終了するには、 `+ .exit `を入力するか、 ` CTRL + D `を1回押すか、 ` CTRL + C +`を2回押すと、シェルプロンプトに戻ります。

邪魔にならないように開始および停止する場合、REPLを使用して簡単なJavaScriptコードを実行する方法を見てみましょう。

ステップ2-Node.js REPLでのコードの実行

REPLは、ファイルを作成せずにJavaScriptコードをテストする簡単な方法です。 ほとんどすべての有効なJavaScriptまたはNode.js式は、REPLで実行できます。

前の手順で、すでに2つの数字の加算を試しました。次に、除算を試してみましょう。 そのためには、新しいREPLを開始します。

node

プロンプトで次を入力します。

> 10 / 5

`+ ENTER `を押すと、出力は予想通り ` 2 +`になります。

2

REPLは、文字列に対する操作も処理できます。 https://www.digitalocean.com/community/tutorials/how-to-work-with-strings-in-javascript#string-concatenation [連結]を入力して、REPLに次の文字列を入力します。

> "Hello " + "World"

再度、 `+ ENTER +`を押すと、文字列式が評価されます:

'Hello World'

関数を呼び出す

Node.jsコードを記述するとき、一般的なグローバルな `+ console.log +`メソッドまたは同様のhttps://www.digitalocean.com/community/tutorials/how-to-define-functions-in-javascriptを介してメッセージを印刷するのが一般的です[関数]。 プロンプトで次を入力します。

> console.log("Hi")

「+ ENTER +」を押すと、次の出力が生成されます。

Hi
undefined

最初の結果は、 + console.log`からの出力であり、 + stdout to`ストリーム(画面)にメッセージを出力します。 `+ console.log `は文字列を返す代わりに文字列を出力するため、メッセージは引用符なしで表示されます。 ` undefined +`は関数の戻り値です。

変数を作成する

JavaScriptでリテラルを操作することはほとんどありません。 REPLでの変数の作成は、 `+ .js +`ファイルでの作業と同じ方法で機能します。 プロンプトで次を入力します。

> let age = 30

「+ ENTER +」を押すと、次の結果になります。

undefined

前と同じように、 + console.log`の場合、このコマンドの戻り値は + undefined`です。 REPLセッションを終了するまで、 `+ age `変数は利用可能です。 たとえば、 ` age `に2を掛けることができます。 プロンプトで次を入力し、「 ENTER」を押します。

> age * 2

年です。結果:

60

REPLは値を返すため、画面に出力を表示するために `+ console.log +`または同様の関数を使用する必要はありません。 デフォルトでは、返された値はすべて画面に表示されます。

複数行ブロック

複数行のコードブロックもサポートされています。 たとえば、特定の数値に3を加算する関数を作成できます。 次を入力して機能を開始します。

> const add3 = (num) => {

次に、「+ ENTER +」を押すと、プロンプトが次のように変わります。

...

REPLは開いた中括弧に気づいたため、インデントする必要がある複数行のコードを記述していると想定しています。 読みやすくするために、REPLは次の行に3つのドットとスペースを追加するため、次のコードはインデントされているように見えます。

関数の2行目と3行目を1つずつ入力し、それぞれの後に「+ ENTER」を押します。

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

右中括弧の後に「+ ENTER」を押すと、「+ undefined」が表示されます。これは、変数への関数割り当ての「戻り値」です。 `+ …​ `プロンプトはなくなり、 `> +`プロンプトが返されます:

undefined
>

次に、値に対して `+ add3()+`を呼び出します。

> add3(10)

予想どおり、出力は次のとおりです。

13

REPLを使用して、プログラムに組み込む前にJavaScriptコードの一部を試すことができます。 REPLには、そのプロセスを簡単にする便利なショートカットも含まれています。

ステップ3-REPLショートカットの習得

REPLは、可能な場合、コーディング時間を短縮するためのショートカットを提供します。 入力されたすべてのコマンドの履歴を保持し、必要に応じてそれらを循環させてコマンドを繰り返すことができます。

たとえば、次の文字列を入力します。

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

これは次のようになります。

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

文字列を編集して「32」を「42」に変更する場合は、プロンプトで「+ UP +」矢印キーを使用して前のコマンドに戻ります。

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

カーソルを左に移動し、「+ 3+」を削除して「4」と入力し、もう一度「+ ENTER」を押します。

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

`+ UP `矢印キーを押し続けると、現在のREPLセッションで最初に使用されたコマンドまで履歴をさかのぼります。 対照的に、「 DOWN +」を押すと、履歴内のより新しいコマンドに向かって反復します。

コマンド履歴の操作が終了したら、最近のコマンド履歴を使い果たし、もう一度プロンプトが表示されるまで、 `+ DOWN +`を繰り返し押します。

最後に評価された値をすばやく取得するには、アンダースコア文字を使用します。 プロンプトで、「+ _ 」と入力し、「 ENTER」を押します。

> _

以前に入力した文字列が再び表示されます:

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

REPLには、関数、変数、およびキーワードのオートコンプリートもあります。 `+ Math.sqrt +`関数を使用して数値の平方根を検索する場合は、次のように最初の数文字を入力します。

> Math.sq

次に、「+ TAB +」キーを押すと、REPLが機能を自動補完します。

> Math.sqrt

オートコンプリートに複数の可能性がある場合、利用可能なすべてのオプションが表示されます。 たとえば、次のように入力します。

> Math.

そして、 `+ TAB`を2回押します。 可能なオートコンプリートが表示されます:

> 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

シェルの画面サイズに応じて、異なる行数と列数で出力が表示される場合があります。 これは、 `+ Math +`モジュールで利用可能なすべての関数とプロパティのリストです。

`+ CTRL + C +`を押すと、現在の行の内容を実行せずにプロンプ​​トの新しい行に移動します。

REPLショートカットを知っていると、使用する際の効率が向上します。 しかし、REPLが生産性の向上に提供する別の機能があります-REPLコマンド_。

手順4-REPLコマンドの使用

REPLには、その動作の制御に役立つ特定のキーワードがあります。 各コマンドはドット「。」で始まります。

。助けて

利用可能なすべてのコマンドをリストするには、 `+ .help +`コマンドを使用します。

> .help

多くありませんが、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

コマンドを忘れた場合は、いつでも `+ .help +`を参照してその機能を確認できます。

.break / .clear

「+ .break 」または「 .clear 」を使用すると、複数行の式を簡単に終了できます。 たとえば、次のように「 forループ」を開始します。

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

次の行を入力する代わりに、それ以上の行の入力を終了するには、 `+ .break `または ` .clear +`コマンドを使用してブレークアウトします。

... .break

新しいプロンプトが表示されます:

>

REPLは、 `+ CTRL + C +`を押すのと同様に、コードを実行せずに新しい行に移動します。

.saveおよび.load

`+ .save `コマンドは、REPLを開始してから実行したすべてのコードをファイルに保存します。 ` .load +`コマンドは、REPL内のファイルからすべてのJavaScriptコードを実行します。

`+ .exit `コマンドまたは ` CTRL + D `ショートカットを使用してセッションを終了します。 次に、 ` node +`で新しいREPLを開始します。 これで、作成しようとしているコードのみが保存されます。

果物を含む配列を作成します。

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

次の行には、REPLが表示されます。

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

この変数を新しいファイル `+ fruits.js +`に保存します。

> .save fruits.js

確認のメッセージが表示されます。

Session saved to: fruits.js

ファイルは、Node.js REPLを開いたディレクトリと同じディレクトリに保存されます。 たとえば、ホームディレクトリでNode.js REPLを開いた場合、ファイルはホームディレクトリに保存されます。

セッションを終了し、 `+ node `で新しいREPLを開始します。 プロンプトで、次を入力して ` fruits.js +`ファイルをロードします。

> .load fruits.js

これは次のようになります。

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

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

`+ .load `コマンドは、JavaScriptインタープリターに期待されるように、コードの各行を読み取って実行します。 現在のセッションで常に利用可能であるかのように、 ` fruits +`変数を使用できるようになりました。

次のコマンドを入力して、「+ ENTER」を押します。

> fruits[1]

REPLは以下を出力します。

'apple'

保存したアイテムだけでなく、 `+ .load `コマンドでJavaScriptファイルをロードできます。 好みのコードエディターまたはコマンドラインエディターである「 nano 」を開いて、すぐにデモンストレーションを行い、「 peanuts.js +」という新しいファイルを作成します。

nano peanuts.js

ファイルが開いたので、次を入力します。

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

`+ CTRL + X +`を押してnanoを保存して終了します。

`+ peanuts.js `を保存した同じディレクトリで、 ` node `でNode.js REPLを起動します。 セッションで ` peanuts.js +`をロードします。

> .load peanuts.js

`+ .load `コマンドは単一の ` console +`ステートメントを実行し、次の出力を表示します:

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

I love peanuts!
undefined
>

REPLの使用が予想よりも長くなった場合、または共有する価値のある興味深いコードスニペットがあるか、さらに詳しく調べる場合は、 `+ .save `および ` .load +`コマンドを使用して、両方の目標を実現できます。

結論

REPLは、最初にファイルに書き込む必要なくJavaScriptコードを実行できるインタラクティブな環境です。

REPLを使用して、他のチュートリアルのJavaScriptコードを試すことができます。