Node.jsとは
JavaScript はブラウザの外でも動く
ここまで書いてきた JavaScript は、すべてブラウザの中で動いていました。ボタンを押したら色が変わる、入力欄の文字を読む、fetch でデータを取ってくる。どれも画面があることが前提です。
Node.js は、その JavaScript をブラウザなしで動かすための実行環境です。実行環境のことをランタイムと呼びます。同じ文法で書いたコードが、画面を持たないコンピュータの上でそのまま動きます。
何ができるようになるのか
ブラウザの JavaScript には、意図的にできないことがあります。あなたが開いたページが勝手にパソコンのファイルを読めたら困るからです。
Node.js にはその制限がありません。代わりに、ブラウザにあったものが無くなります。
JavaScript
console.log(typeof window); // browser: object node: undefined
console.log(typeof document); // browser: object node: undefined
console.log(typeof process); // browser: undefined node: objectwindow と document は画面があるから存在するものです。Node.js には画面が無いので、どちらもありません。逆に process は、動いているプログラム自身の情報を持つ Node.js 側の入り口です。
つまり両者はこう分かれます
| ブラウザ | Node.js | |
|---|---|---|
| 役割 | 画面を描く | サーバーで待ち受ける |
| 使える | window, document | process, ファイル操作 |
| 誰が動かす | 訪問者のパソコン | あなたが用意したサーバー |
文法は同じです。違うのは周りに何が置いてあるかだけです。
このコースで作るもの
このコースでは、フリマアプリ fleama の API をひとつ作り上げます。React でフリマの画面を作ったとき、商品一覧はモックの偽データを返していました。あの裏側を、これから本物にしていきます。
最初は 1 行のスクリプトから始めて、最後には出品・検索・購入・ログインまでできる API になります。
手を動かす
演習では、実行環境の名前を受け取ってその説明を返す関数を書きます。ブラウザと Node.js の違いを、自分の言葉で分けられるか確かめてください。
要件
"browser"を渡したら画面を描くための実行環境ですを返す"node"を渡したらサーバーで動かすための実行環境ですを返す- そのどちらでもないときは
分かりませんを返す
入出力例
describeRuntime("browser") → "画面を描くための実行環境です"
describeRuntime("node") → "サーバーで動かすための実行環境です"
describeRuntime("deno") → "分かりません"
describeRuntime("") → "分かりません"ヒント
編集 ゆめさく編集部