web-dev-qa-db-ja.com

Node.jsは他のサーバー側フレームワークとどう違うのですか?

Node.jsが非常に人気が高まっていることに気づき、その中で小規模なプロジェクトを行っている人々のインスタンスをいくつか目にしました。

また、Node.jsが何ができるかを理解するために長所と短所のリストも調べましたが、それがPHP、Perl、Ruby on Rails。

具体的には、Node.jsと現在の選択肢の違いは何ですか?なぜですか?

22
Saeed Neamati

Node.jsを既存のサーバー側フレームワークと異なるものにする2つの重要な点があります。非同期イベントプログラミング言語としてのJavaScript

非同期イベント

既存のサーバー側フレームワークのほとんどは同期アーキテクチャを使用していますが、Node.jsはasynchronousアーキテクチャを使用しており、JavaScriptで適切に処理できます。つまり、サーバーはイベントに反応し、イベント(メッセージ)を送信します。データベース。このプログラミングスタイルは同期スタイルとは非常に異なり、他の言語では使いにくい場合があります。 Node.jsは、非同期IOを使用した非同期スタイルを採用しており、適切にスケーリングできます。

参照 イベント駆動型アーキテクチャ

JavaScript

JavaScriptは、Webアプリケーションがクライアントで使用しているプログラミング言語です。サーバー側で同じ言語を使用することは、開発者がクライアントとサーバーの両方でJavaScriptの知識を適用し、必要に応じて同じ関数を使用できることを意味します。

私はプレゼンテーション Ryan DahlによるNode.jsの紹介 をお勧めします。ここでは、Node.jsのイベント駆動型アーキテクチャについて詳しく説明しています。

19
Jonas

イベント駆動 であるため、その違い。これにより、サーバーは非常にスケーラブルになります。

一言で言えば;

スレッドモデル

  1. クライアントが何かを求める
  2. サーバーがオフになり、リクエストを処理します
  3. それをクライアントに返します
  4. 新しいリクエストを処理する準備ができました

イベントモデル

  1. クライアントが何かを求める
  2. サーバーは処理のために要求を渡します。新しいリクエストを処理する準備ができました
  3. サーバーはより多くのリクエストを処理する
  4. リクエストの処理が完了すると、サーバーはクライアントにデータを返します
6
Tom Squires

私は、その人気はJavaScriptの使用によるものだという印象を受けていました。多くのWeb開発者がJavaScriptを知っているため、同じ言語を使用してサーバー側コードを開発できることがセールスポイントです。これには、私が考えることができるいくつかの利点があります。

  • コードファイルはサーバーとクライアント間で共有できるため、システムの両側を処理するだけで作業が重複するのを防ぐことができます。
  • 開発者は言語を精神的に切り替える必要はありません。 (私の意見では大したことではありません)
  • アーキテクトは、Webソリューションを設計するときに複数の言語を選択する必要はありません。
  • サーバーサイドコードを開発したことがない人でも、別の言語を学ぶことなく開発を行うことができます。 (貴重な議論になる可能性は低い、IMHO)
2
John Fisher