何らかの Web 開発を行っている場合は、おそらく、ある時点で JavaScript を学習して作成する必要があるでしょう。 Node は、サーバー側とクライアント側の言語を統合することで Web アプリケーション開発を簡素化することを目的としています。
ノードとは何ですか?
Node.JS (一般に単に Node と呼ばれる) は、Web ブラウザーの外部で JS コードを実行できるようにする JavaScript ランタイムです。ノードは、Chrome での処理に使用されるものと同じ Google の V8 JavaScript エンジン上に構築されています。
これは、アプリケーションの構築、最新の Web アプリ フレームワークの操作、および JS を使用したサーバー側のスクリプト作成によく使用されます。実際には、Node を使用して
.js
ファイルを実行できます。
node
実行方法と同様のコマンド
.py
を含むファイル
python
:
ノードmain.js
JavaScript コードは、Node.js で実行すると少し動作が異なります。まず第一に、DOM (Web ページのロードされた HTML) がないため、HTML 要素にアクセスしたり、jQuery などのライブラリを効果的に使用したりすることはできません ( 代替手段 はありますが)。ただし、システム リソースにはアクセスでき、ファイルの読み取りと書き込み、ネットワーク接続の確立、さらにはアプリケーションの提供も可能です。
Node は、 Electron と呼ばれるフレームワークを使用して、デスクトップ アプリを構築するためにも使用されます。 Electron は、Slack、Discord、Visual Studio Code、Skype を強化しています。基本的に、デスクトップ用に設計された Chrome のスリム化バージョンを実行し、アプリ自体は実際には単なる Web アプリです。ただし、その結果、Electron アプリは RAM を非常に消費し、ネイティブのアプリよりも動作が少し悪くなりますが、多くの場合、すべてのオペレーティング システムと Web での均一性のためにその取引が行われます。
ノードエコシステム (npm モジュール)
Node 自体は優れていますが、Node パッケージ マネージャーである
npm
がなければ、現在のような状態にはならなかったでしょう。
npm
すると、フレームワークやプラグインを使用して Node を拡張でき、コードを簡単にインストールして新しいプロジェクトに組み込むことができます。
たとえば、スクリプトを作成していて、外部リソースに対して POST リクエストを行う必要があるとします。 JS の組み込み
fetch
メソッドを使用することも、Promise を使用するより使いやすい
axios
を使用することもできます。 axios をプロジェクトに追加したい場合は、スクリプトを独自のフォルダーに移動して、次を実行します。
npm初期化
npm インストール axios
これにより、プロジェクト設定とインストールされたパッケージを追跡する
package.json
というファイルが作成されます。
npm install
コマンドは、ダウンロードされたモジュールを保存する
node_modules
というフォルダーを作成します。多くのモジュールを含む大規模なプロジェクトでは、このフォルダーが非常に大きくなる可能性があることに注意してください。
スクリプトで axios を使用するには、次の行を先頭に追加します。
const axios = require('axios');
または、ES6 構文では次のようになります。
「axios」から axios をインポートします。
これにより、
node_modules
からモジュールがインポートされ、スクリプトがそれにアクセスできるようになります。そこから、それをプロジェクトの一部として、また自分が作成した単なる別の関数であるかのように使用できます。
Axios は、便利な
npm
ユーティリティの基本的な例にすぎません。おそらく
React
、
Angular
、
Vue
などの他のモジュールについて聞いたことがあるでしょう。これらはすべて、ブラウザーで実行される対話型アプリの構築に使用される完全な Web アプリケーション フレームワークです。これらのフレームワークを使用して構築されたアプリは、一般に「ノード アプリ」と呼ばれます。これらは実際には Node で実行されませんが、最終製品は古い Web サーバーで提供できる静的 HTML になるため、開発には Node が使用され、パッケージは
npm
を使用して Node エコシステムからインストールされます。
結局のところ、それはすべて JavaScript です。多くの場合、開発コードは ES6 などの「次世代」JavaScript を利用し、Webpack と Babel を使用して 1 つの大きな「bundle.js」ファイルにコンパイルされ、クライアントに提供して実行できます。
Node は nginx および Apache でどのように動作しますか?
Node 自体は nginx や Apache と直接インターフェイスしません。Node が行うのは
.js
ファイルの実行だけです。ただし、React またはその他のフレームワークで構築された Node アプリの動作は、通常の HTML ページとは少し異なります。
React では、基本的に、
bundle.js
ファイルをロードする空の HTML ページを提供します。このバンドル ファイルは他の JavaScript ファイルと同様に機能し、nginx または Apache を Web サーバーとして使用してホストできます。バンドルは React をロードし、それ自体を Web ページ上にレンダリングしてコンテンツを表示します。すべてのコンテンツはバンドル ファイルに含まれています。
注目すべき点の 1 つは、 Express と呼ばれる人気のあるライブラリです。 Express は Web コンテンツを提供し、HTTP サーバーとして機能できます。これは、ノードベースの REST API を作成するためのルーターとしてよく使用されます。 Express はポートをリッスンし、リクエストを別の機能 (通常はデータベースなどの別のリソースにアクセス) に転送して、HTTP 応答を送り返すことができます。
この場合、静的コンテンツに使用する nginx サーバーの背後に Express を配置し、すべての
/api
ルートを Express にルーティングします。これにより、Web アプリが外部リソースにアクセスし、Node のサーバー側スクリプト機能とデータベースとのインターフェース機能を最大限に活用できるようになります。 nginx を
/api
ルートのリバース プロキシとして使用したり、他の静的コンテンツの Web サーバーとして使用したりできます。
ただし、Express は Web サーバーではありません。この例では、nginx の代わりにはなりません。これは 1 つとして機能することができ、開発用の単純な Express サーバーや、あまりトラフィックを受信しない単純なページをセットアップするのに非常に便利です。しかし、ネイティブアプリであるnginxやApacheのパフォーマンスとは程遠いです。実際の Web アプリケーションを構築している場合は、nginx を使用してそれを提供し、API を提供する場合にのみ Express を使用します。
Web サイトには Node を使用する必要がありますか?
Web アプリを構築していますか?そうであれば、Node を真剣に検討する必要があります。代わりに、Ruby on Rails、PHP を使用した Laravel、Python を使用した Django が考えられます。しかし、Node にはこれまでで最大のコミュニティがあり、フレームワークに関しては多くの選択肢があります。 Ruby on Rails が気に入らない場合は、別の言語を学習せずにそのまま使い続けることになりますが、React のようなフレームワークから Vue への移行は、両方とも JavaScript であるため、はるかに簡単です。
Web アプリを構築していない場合は、おそらく Node.js は必要ありません。静的ページを対象としたものではありません。確かにそうすることはできますが、あまりメリットはありません。 React のような完全な Web フレームワークを静的 (またはほぼ静的) サイトに使用する予定がある場合は、React がサイトに多くのオーバーヘッドをもたらすため、再考した方がよいかもしれません。一般に、React の読み込み時間は、サーバー側レンダリングを使用しないとはるかに遅くなります。これは、セッション期間が長いように設計された Web アプリケーションには問題ありませんが、ブログや優れた SEO を求めるものには適していません。 Vanilla JS は、特に jQuery の助けを借りて、かなりの量の DOM 操作をそれ自体で行うことができます。





