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.js。 このチュートリアルでは、バージョン10.16.0を使用します。 これをmacOSまたはUbuntu18.04にインストールするには、Node.jsをインストールしてmacOSにローカル開発環境を作成する方法またはノードをインストールする方法の「PPAを使用してインストールする」セクションの手順に従います。 Ubuntu18.04の.js。
- ここで見つけることができるJavaScriptの基本的な知識:JavaScriptでコーディングする方法
サーバーやローカルコンピューターを使用せずにNode.jsREPLを試してみたい場合は、ブラウザーでインタラクティブ端末を使用できます。 下のインタラクティブターミナルの起動!ボタンをクリックして開始します。
ステップ1—REPLの開始と停止
node
がインストールされている場合は、Node.jsREPLもあります。 開始するには、コマンドラインシェルにnode
と入力するだけです。
- node
これにより、REPLプロンプトが表示されます。
>
記号は、JavaScriptコードを入力してすぐに評価できることを示します。
たとえば、次のように入力して、REPLに2つの数値を追加してみてください。
- 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を開始します。
- node
プロンプトで次のように入力します。
- 10 / 5
ENTER
を押すと、期待どおりに2
が出力されます。
2
REPLは、文字列に対する操作も処理できます。 次のように入力して、REPL内の次の文字列を連結します。
- "Hello " + "World"
もう一度ENTER
を押すと、文字列式が評価されます。
'Hello World'
注:出力で二重引用符ではなく一重引用符が使用されていることに気付いたかもしれません。 JavaScriptでは、文字列に使用される引用符はその値に影響しません。 入力した文字列が一重引用符を使用している場合、REPLは出力で二重引用符を使用するのに十分賢いです。
関数の呼び出し
Node.jsコードを作成する場合、グローバルconsole.log
メソッドまたは同様の関数を介してメッセージを出力するのが一般的です。 プロンプトで次のように入力します。
- console.log("Hi")
ENTER
を押すと、次の出力が生成されます。
Hi
undefined
最初の結果は、console.log
からの出力であり、stdout
ストリーム(画面)にメッセージを出力します。 console.log
は文字列を返す代わりに文字列を出力するため、メッセージは引用符なしで表示されます。 undefined
は関数の戻り値です。
変数の作成
JavaScriptでリテラルを操作することはめったにありません。 REPLでの変数の作成は、.js
ファイルでの作業と同じように機能します。 プロンプトで次のように入力します。
- let age = 30
ENTER
を押すと、次のようになります。
undefined
以前と同様に、console.log
の場合、このコマンドの戻り値はundefined
です。 age
変数は、REPLセッションを終了するまで使用できます。 たとえば、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が生産性を向上させるために提供するもう1つの機能があります。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 loop
を開始します。
- 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を開始します。 これで、作成しようとしているコードのみが保存されます。
果物の配列を作成します。
- fruits = ['banana', 'apple', 'mango']
次の行で、REPLは次のように表示します。
[ 'banana', 'apple', 'mango' ]
この変数を新しいファイルfruits.js
に保存します。
- .save fruits.js
確認で迎えられます:
Session saved to: fruits.js
ファイルは、Node.jsREPLを開いたのと同じディレクトリに保存されます。 たとえば、ホームディレクトリで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.jsREPLをnode
で開始します。 セッションにpeanuts.js
をロードします。
- .load peanuts.js
.load
コマンドは、単一のconsole
ステートメントを実行し、次の出力を表示します。
console.log('I love peanuts!');
I love peanuts!
undefined
>
REPLの使用が予想よりも長くなる場合、または共有または詳細に調査する価値のある興味深いコードスニペットがあると思われる場合は、.save
および.load
コマンドを使用して、これらの両方の目標を実現できます。 。
結論
REPLは、最初にファイルに書き込むことなくJavaScriptコードを実行できるインタラクティブな環境です。
REPLを使用して、他のチュートリアルのJavaScriptコードを試すことができます。