web-dev-qa-db-ja.com

Node.jsを使用する理由とタイミング

可能性のある複製:
Node.jsをいつ使用するかを決定する方法

少し曖昧な場合は申し訳ありませんが、他のサーバー側言語の代わりに Node.js を使用することの本当の利点を理解しようとしています。

私はJavaScriptが大好きなので、おそらくNode.jsで遊ぶつもりですが、プロジェクトで使用する必要があるかどうかを知りたいです。

134
gion_13

非同期の非ブロッキング I/O ビルド V8 の上にイベントが発生しました。

したがって、Google JavaScriptインタープリターであるV8のすべてのパフォーマンスが向上しています。 JavaScriptのパフォーマンスレースはまだ終わっていないため、GoogleはV8のパフォーマンスを常に無料で更新することを期待できます。

ノンブロッキングI/Oがありますが、これは単にI/Oを行う正しい方法です。これは、イベントループに基づいており、I/Oに非同期コールバックを使用しています。

HTTPサーバーの作成、 [〜#〜] tcp [〜#〜] サーバーの作成、ファイルI/Oの処理などの便利なツールを提供します。

これは、Cですべてをゼロから作成することなく、あらゆる種類のI/Oを実行するための低レベルの高性能プラットフォームです。また、非ブロッキングI/Oにより非常にうまくスケーリングします。

したがって、高レベルのスクリプティング言語を使用しながら、ノンブロッキングI/Oを使用して高度なスケーリングと効率的なアプリケーションを作成する場合は、Node.jsを使用します。必要に応じて、Cで拡張機能を記述することにより、コードの一部を手作業で最適化できます。

Express.jsnow など、抽象化を可能にするNode.js用のOSライブラリがたくさんあります。

(遅い)高レベルの抽象化ですべてを実行したい場合は、Node.jsを使用したくないでしょう。 [〜#〜] rad [〜#〜] が必要な場合は、Node.jsを使用したくないでしょう。若いプラットフォームを信頼する余裕がない場合、他のフレームワークに組み込まれていることを行うために自分で大きなコードを書く必要があるか、Nodeを使用できないため、Node.jsを使用したくない.js。APIはまだ安定していないか、サブ1.0リリースです。

94
Raynos

最もよく引用される2つの利点は次のとおりです。

  • JavaScriptはサーバー側とクライアント側の両方です。学習するものが少なくなり、コンテキストの切り替えが少なくなり、両側でコードを再利用できるようになります。
  • ノンブロッキングI/OとChromeのV8エンジンを使用して、高速で拡張性の高いサーバーを提供します。

しかし、私にとって最も興味深い部分は、この分野で起こっている活動の量です。 nodeの開発中には非常に興味深いアイデアがたくさんあります- Node.jsモジュールのリスト をチェックしてください。

29
David Tang

JavaScriptを愛好している(またはそうでない場合でも)場合、いくつかの理由でNode.jsを使用できます/使用する必要があります。

  • これは、JavaScriptのパワーをサーバーサイド環境にもたらす低レベルの軽量でスタンドアロンのフレームワークです。
  • より高いレベルの抽象化が必要な場合は、多数の modulesnpm が用意されており、すぐに使用できる幅広いアプリケーションを見つけることができます。
  • 開発プロセスの高速化/無制限化-たとえば、深刻なものを書き始めるために追加のツールを大量に必要としません。
  • 愛好家と非常に才能のある人々でいっぱいの大きなオープンソースベースのコミュニティ。
  • リアルタイムのWeb指向アプリケーションを作成するために作られました-それが(近い)未来です。
18
yojimbo87

個人的には、次の場合にNode.jsを使用する可能性が最も高くなります。

  • HTTPプロトコル を使用しないサーバーを作成したい。
  • サーバー実装のプロトタイプを作成しています。
  • 大量のトラフィックを想定していないサーバーを作成しています(たとえば、一致するC++実装の隣にNode.js実装のプロファイルを作成したことはありませんが)。
  • コミュニティで活発になりたい(明らかに急速に成長している)。
11
Demian Brecht