Node.js とブラウザの違い
ブラウザと Node.js はどちらも JavaScript をプログラミング言語として使用します。ブラウザで実行されるアプリを構築することと、Node.js アプリケーションを構築することは全く異なります。どちらも JavaScript ですが、その体験を根本的に異なるものにするいくつかの重要な違いがあります。
JavaScript を多用するフロントエンド開発者の視点から見ると、Node.js アプリは大きな利点をもたらします。それは、フロントエンドとバックエンドのすべてを単一の言語でプログラミングできるという快適さです。
プログラミング言語を完全かつ深く学ぶことがどれほど難しいか私たちは知っています。クライアントとサーバーの両方で、Web 上のすべての作業を同じ言語で行うことで、あなたは大きなチャンスを手にし、ユニークな優位な立場に立つことができます。
変化するのはエコシステムです。
ブラウザでは、ほとんどの場合、DOM やクッキーのような他の Web プラットフォーム API と対話しています。もちろん、これらは Node.js には存在しません。document や window、その他ブラウザが提供するすべてのオブジェクトはありません。
そしてブラウザには、Node.js がモジュールを通じて提供する、ファイルシステムへのアクセス機能のような素晴らしい API がすべて揃っているわけではありません。
もう一つの大きな違いは、Node.js では環境を制御できることです。誰でもどこにでもデプロイできるオープンソースアプリケーションを構築している場合を除き、どのバージョンの Node.js でアプリケーションを実行するかを把握しています。訪問者がどのブラウザを使うかを選択する贅沢がないブラウザ環境と比較すると、これは非常に便利です。
これは、あなたの Node.js バージョンがサポートするすべてのモダンな ES2015+ JavaScript を書くことができることを意味します。JavaScript の進化は非常に速いですが、ブラウザのアップグレードは少し遅れることがあります。そのため、Web 上では古い JavaScript / ECMAScript のリリースを使用せざるを得ないことがあります。Babel を使用してコードを ES5 互換に変換してからブラウザに提供することもできますが、Node.js ではその必要はありません。
もう一つの違いは、Node.js が CommonJS と ES モジュールシステムの両方をサポートしている(Node.js v12 以降)のに対し、ブラウザでは ES モジュール標準の実装が始まったばかりであることです。
実際には、これは Node.js では require() と import の両方を使用できるのに対し、ブラウザでは import に限定されることを意味します。