Node.js を試す
このユニットでは、Node.js スクリプトを作成して実行します。
ブラウザーで開発コンテナーを起動する
このプロジェクトのすべての演習を完了するために必要なすべての依存関係が付属する開発コンテナー環境が利用できます。 開発コンテナーは、ブラウザー内の GitHub Codespaces で、または Visual Studio Code を使用してローカルで実行することができます。
GitHub Codespaces は、Visual Studio Code for the Web をユーザー インターフェイスとして使用して、GitHub によって管理される開発コンテナーを実行します。 正しい開発者ツールと、このトレーニング モジュールを完了するために事前インストールされた依存関係を持つ最も簡単な開発環境として、GitHub Codespaces を使用します。
重要
すべての GitHub アカウントでは、2 つのコア インスタンスで毎月最大 60 時間無料で Codespaces を使用できます。 詳細については、「GitHub Codespaces に月単位で含まれるストレージとコア時間」を参照してください。
MicrosoftDocs/node-essentials
GitHub リポジトリのmain
ブランチに新しい GitHub Codespace を作成するプロセスを開始します。[codespace の作成] ページで、codespace の構成設定を確認してから、[codespace の作成] を選択します。
Codespace が起動するまで待ちます。 この起動プロセスには数分かかることがあります。
codespace で新しいターミナルを開きます。
Node.js REPL
Node.js には、すばやくコードを評価して実験するのに役立つ、組み込みの read-eval-print loop (REPL) モードがあります。 REPL モードは対話型コンソール環境であり、入力した JavaScript コードが Node.js によって解釈され、コードが実行されて、結果が出力されます。
Node.js REPL モードは次のように動作します。
- Read:ユーザーが入力した JavaScript コードを読み取って解析します (コードが無効な場合はエラーが表示されます)。
- Eval:入力した JavaScript コードが評価されます。
- Print:計算された結果が出力されます。
- Loop:ループし、ユーザーが新しいコマンドを入力するまで待機します (ユーザーが ctrl + c を 2 回入力すると終了します)。
REPL モードを開始するには、開発コンテナーのターミナルで node
プログラムを実行します。
Note
右クリック >[貼り付け] を使用して、コピーしたコマンドを REPL コンソールに入力します。
node
REPL 環境が開きます。 REPL プロンプトが表示されます。
>
REPL コンソールで次のコードを入力します (右クリック >[貼り付け])。
console.log('Hello World, from the REPL.')
このコードを実行すると、"Hello World, from the REPL." というメッセージが REPL コンソールに出力されます。
Hello World, from the REPL.
REPL コンソールを終了するには、Ctrl + C キーを 2 回押します。
Node.js スクリプトを作成する
Node.js では、ファイルからのコード実行もサポートされています。
開発コンテナーで hello-world という名前の新しいフォルダーを作成します。
フォルダー名を右クリックしてから、[統合ターミナルで開く] を選択することで、ターミナル内で新しいフォルダーを開きます。
ターミナルで、ノード プロジェクトを初期化します。
npm init -y
ノード パッケージをインストールし、
node-fetch
を実行して非同期 HTTP 要求を行います。npm install node-fetch
package.json
ファイルを開いて、次のプロパティを追加し、トップレベル async/await を許可します。"type":"module",
新しいフォルダーで index.js という名前のファイルを作成します。
次のコードを index.js ファイルにコピーします。
console.log('Hello World, from a script file.');
ターミナルで、次のように
node
コマンドの後にファイル名の index.js を入力します。node index.js
次の出力が表示されます。
Hello World, from a script file.
これで最初の Node.js JavaScript コードが実行されました。
- 質問:console.log は同期ですか、それとも非同期ですか?
- 答え:メソッドは
console.log
開発段階ですぐに実行されるように見えるので、非同期であると見なされます。 このメソッドの非同期動作は保証されないため、同期と見なす必要があります。 コードの実行は、console.log
メソッドが完了するまでブロックされる "可能性がある" ため、運用環境のコードにconsole.log
ステートメントを保持しないように注意してください。
トップレベル非同期関数を追加する
次の最上位の非同期コードは、HTTP JSON データ ソースを要求した後、それを表示します。
次のコードを
index.js
ファイルに追加して、非同期 HTTP 要求を作成します。import fetch from 'node-fetch'; console.log(`start`); try { const res = await fetch('https://github.com/MicrosoftDocs/node-essentials'); console.log('statusCode:', res.status); } catch (error) { console.log(`error: ${error}`); } console.log(`end`);
https.get
メソッドは Node.js Web サイトに HTTP 要求を行い、応答を返します。get
メソッドは、要求する URL と、応答を受信したときに呼び出されるコールバック関数という 2 つのパラメーターを受け取ります。 コールバック関数は、res
という 1 つのパラメーターを受け取ります。これは応答オブジェクトです。アプリケーションを再実行します。
node index.js
コンソール ログの順序は次のとおりです。
start statusCode: 200 end
出力から、イベント ループの動作を確認できます。 HTTP メソッドは呼び出されてタスク キューに入れられ、戻るのを待機します。 イベント ループは、console.log メソッドである次のタスクを受け取ります。
開発コンテナーを停止する
GitHub Codespaces 環境を削除すると、アカウントに対して取得するコアごとの無料時間エンタイトルメントの量を最大化できることが保証されます。
重要
GitHub アカウントのエンタイトルメントの詳細については、「 GitHub Codespaces に月単位で含まれるストレージとコア時間」を参照してください。
GitHub Codespaces ダッシュボード (https://github.com/codespaces) にサインインします。
MicrosoftDocs/node-essentials
GitHub リポジトリをソースとして現在実行中の Codespaces を見つけます。codespace のコンテキスト メニューを開き、[削除] を選択します。