「Node.js って結局なに?」
って急に聞かれても答えられない気がします。
私は Node.js = JavaScript をサーバーで動かす環境、くらいの認識だったのですが、きちんと調べてみると間違っていたのでまとめていきます。
Node.js とは
公式ドキュメント には以下のようなことが書かれていました。
- JavaScript の実行環境
- 拡張性の高いネットワークアプリケーションを構築できる
- Google Chrome のコアとなっている、(高速に動作する) V8 エンジンをブラウザの外で動かすことで高いパフォーマンスを実現している
- ほとんどの種類のプロジェクトに対応できる
- クロスプラットフォーム
- オープンソース
- スレッドを複数立ち上げることが重大なバグの原因となるため、シングルプロセスであり、非同期処理に対応
- JavaScript を書いていた人にとっては別言語を勉強せずにサーバーサイドの開発ができるメリットがある
- ブラウザのアップデートを待たずに新しい ECMAScript のバージョンを使える
- Node.js のバージョンを変更することで使用する ECMAScript のバージョンを切り替えられる
そもそも JavaScript はブラウザで動く言語であり、コマンドラインでは動かない言語でした。
それが Node.js の登場により JavaScript をPCの中で使えるようになったのです 👏 OS の機能にアクセスできるのでできることの幅が広がりました。
Node.js を使うとまた大量のアクセスがあってもきちんと処理できる丈夫な Web サーバーを JavaScript で構築できるメリットがあります。
React を動かすのに Node.js 使うのはなぜ?
Node.js がサーバーサイド、React はクライアントサイドでしょ…? とずっと疑問に思っていたのでこちらも調べてみました。
そもそも Node.js は Web サーバーを立てる機能がある、JavaScript を PC 内で動かすための実行環境なのでサーバーサイドとは限りません。
また React は Node.js がなくても Babel と一緒に CDN で導入すれば動きます。
ただ大きなプロジェクトになってくるとパッケージは2つだけでは済みません。React(だけでなく、Vue や、Mocha などのテストライブラリも)を Node.js 環境で動かす大きなメリットとして、npm を使えるという点が挙げられます。
npm とは?
npm は Node.js のパッケージマネージャです。ライブラリやフレームワークを npm i 〇〇
とコマンドラインで叩くことでインストールできます。アンインストールもコマンドでできます。
また package.json
というファイルが自動生成され、自分が何のパッケージをどのバージョンで使っているのかを把握できます。他の人に共有して同じ環境を整えてもらうことも可能です。
React も Vue も JQuery も Chai も管理できます。
まとめ
- Node.js は JavaScript を PC の中で動かすための実行環境
- バックエンドも JavaScript で開発できるメリットがある
- Node.js で開発することで npm が使える = パッケージを簡単に管理できる
参考資料
- Introduction to Node.js
- Node.js - Wikipedia
- Node.js とは | Node.js
- About
- npm About
- ブラウザだけで動作するNode.jsなしReactの使い方 - メタルドラマーのIT備忘録(IT memorandum by a metal drummer)