開発者ドキュメント

Node.jsREPLの使用方法

著者は、 Open Internet / Free Speech Fund を選択して、 Write forDOnationsプログラムの一環として寄付を受け取りました。

序章

Node.js Read-Eval-Print-Loop (REPL)は、Node.js式を処理するインタラクティブなシェルです。 シェルはユーザーが入力したJavaScriptコードを読み取り、 eval はコード行の解釈結果を評価し、は結果をユーザーに出力し、はループしますユーザーが終了するように合図するまで。

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

前提条件

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

サーバーやローカルコンピューターを使用せずにNode.jsREPLを試してみたい場合は、ブラウザーでインタラクティブ端末を使用できます。 下のインタラクティブターミナルの起動!ボタンをクリックして開始します。

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

nodeがインストールされている場合は、Node.jsREPLもあります。 開始するには、コマンドラインシェルにnodeと入力するだけです。

  1. node

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

>記号は、JavaScriptコードを入力してすぐに評価できることを示します。

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

  1. 2 + 2

ENTERを押すと、REPLは式を評価し、次を返します。

4

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

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

ステップ2—Node.jsREPLでコードを実行する

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

前のステップでは、すでに2つの数値の加算を試しましたが、次に除算を試してみましょう。 これを行うには、新しいREPLを開始します。

  1. node

プロンプトで次のように入力します。

  1. 10 / 5

ENTERを押すと、期待どおりに2が出力されます。

2

REPLは、文字列に対する操作も処理できます。 次のように入力して、REPL内の次の文字列を連結します。

  1. "Hello " + "World"

もう一度ENTERを押すと、文字列式が評価されます。

'Hello World'

:出力で二重引用符ではなく一重引用符が使用されていることに気付いたかもしれません。 JavaScriptでは、文字列に使用される引用符はその値に影響しません。 入力した文字列が一重引用符を使用している場合、REPLは出力で二重引用符を使用するのに十分賢いです。

関数の呼び出し

Node.jsコードを作成する場合、グローバルconsole.logメソッドまたは同様の関数を介してメッセージを出力するのが一般的です。 プロンプトで次のように入力します。

  1. console.log("Hi")

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

Hi
undefined

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

変数の作成

JavaScriptでリテラルを操作することはめったにありません。 REPLでの変数の作成は、.jsファイルでの作業と同じように機能します。 プロンプトで次のように入力します。

  1. let age = 30

ENTERを押すと、次のようになります。

undefined

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

  1. age * 2

結果は次のとおりです。

60

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

マルチラインブロック

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

  1. const add3 = (num) => {

次に、ENTERを押すと、プロンプトが次のように変更されます。

...

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

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

return num + 3;
}

中括弧を閉じた後でENTERを押すと、変数への関数割り当ての「戻り値」であるundefinedが表示されます。 ...プロンプトはなくなり、>プロンプトは次のように戻ります。

undefined
>

ここで、値に対してadd3()を呼び出します。

  1. add3(10)

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

13

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

ステップ3—REPLショートカットをマスターする

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

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

  1. "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を押します。

  1. _

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

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

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

  1. Math.sq

次に、TABキーを押すと、REPLは機能をオートコンプリートします。

> Math.sqrt

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

  1. 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が生産性を向上させるために提供するもう1つの機能があります。REPLコマンドです。

ステップ4—REPLコマンドの使用

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

。ヘルプ

使用可能なすべてのコマンドを一覧表示するには、.helpコマンドを使用します。

  1. .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 loopを開始します。

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

次の行を入力する代わりに、それ以上の行の入力を終了するには、.breakまたは.clearコマンドを使用して次のように分割します。

.break

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

>

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

.saveおよび.load

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

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

果物の配列を作成します。

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

次の行で、REPLは次のように表示します。

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

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

  1. .save fruits.js

確認で迎えられます:

Session saved to: fruits.js

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

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

  1. .load fruits.js

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

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

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

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

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

  1. fruits[1]

REPLは以下を出力します:

'apple'

保存したアイテムだけでなく、.loadコマンドで任意のJavaScriptファイルを読み込むことができます。 お好みのコードエディタまたはコマンドラインエディタであるnanoを開いて、peanuts.jsという名前の新しいファイルを作成して簡単に説明しましょう。

  1. nano peanuts.js

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

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

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

peanuts.jsを保存したのと同じディレクトリで、Node.jsREPLをnodeで開始します。 セッションにpeanuts.jsをロードします。

  1. .load peanuts.js

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

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

I love peanuts!
undefined
>

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

結論

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

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

モバイルバージョンを終了