node.jsとは一体?
この記事では,node.jsはいったい何者なのかを,色々と寄り道しながら説明していきます.
Node.js
JavaScriptとは違うの?
Node.jsを説明していると,必ず聞く言葉ですね.
JavaScriptとNode.jsは,違います.
JavaScriptは,プログラミング言語の一つ.
Node.jsは,実行環境の一つ.
というように,そもそも根本が違うんですね.
そもそもJavaScriptというのは,HTMLと併用される言語で,ウェブブラウザ上(ChromeやEdge,Firefox)で動き,コンパイルが必要ありません.
そして,そのJavaScriptをウェブブラウザ上ではなく,サーバー上で動くようするのがNode.jsという感じです.
何言ってるかわかんないって方いらっしゃいます?
安心してください.昔の私もそうでした.
ウェブブラウザ上とサーバー上の違いがわからない.
そもそもここがわからないと,JavaScriptとNode.jsの違いがわかりません.
ウェブブラウザ上で動くJavaScript
今皆さんはこの記事を見ていますよね?
この記事は,HTMLとCSSとJavaScript(と,その他画像や動画などのメディアやファイル)で作られていて,サーバーから皆さんのブラウザに,それらすべてが送られているのです.
この,サーバーから送られるjavaScriptが,ウェブブラウザ上で動くJavaScriptです.(Node.jsではないほう)
そのため,この記事を開いたままインターネット通信を切っても,こちら側にすべてのファイルが送られているので,続けて閲覧することができるのです.
ちなみに,この記事も(というか全てのページで)どのようなHTMLが送られているか,見ることができます.
(F12を押して開発者ツールを開き,NetWorkを選択し,リロードしたときに一番最初に出た名前をファイル検索)
サーバー上で動くJavaScript(Node.js)
では,サーバー側はどのようにHTML等を送っているのでしょうか.
皆さんがこの記事を見るとき,このような事が行われているのです.
- 皆さんがURLをウェブブラウザに入力する.
- ウェブブラウザが,HTTPリクエスト(後述)を送る.
- サーバーがHTTPリクエストを受け取る.
- サーバーがリクエストをもとに,HTTPレスポンス(後述)を送る.
- ウェブブラウザがHTTPレスポンスを受け取る
- ウェブブラウザがHTTPレスポンスで送られたものを表示する.
HTTPリクエストとは
URLにアクセスした時点で,サーバーに「このURLのHTML等を送って!」という要求を送ることです.
サーバーに対して,「このURLのページを見させて!」と言っていると思っていただいて大丈夫です.
HTTPレスポンスとは
HTTPリクエストに対しての答えです.
HTTPリクエストで,「https://zenn.dev/tukurugi_v/ffb26169e2ca46 のページが見たい!」と言ったとしましょう.
するとサーバーは,「OK!じゃあこれがそのURLのHTMLとかだよ!」と,答えを返してくれます.(OKではないこともあります)
この返答のことを,HTTPレスポンスといいます.
結局Node.jsとは?
上記のようなHTTPリクエストを受け取り,HTTPレスポンスを返すためのJavaScript実行環境.
なぜNode.jsが選ばれるのか.
個人的に,Node.jsを選ぶメリットは,
- JavaScriptを用いているため,学習コストを抑えられる.
- JavaScriptをサーバーで使える.
の2つだと思っています.
JavaScriptは,世界で一番人気な言語[1]と言われています(2022/10/20).
また,どちらにせよウェブ開発を続けていく途中でJavaScriptを使うことが来ると思います.
そこで,Node.jsを選択することで学習コストを抑えられます.
参考文献
Discussion