1. ホーム
  2. javascript

[解決済み] Node.jsを使うタイミングをどう判断するか?

2022-03-15 22:05:19

質問

こういうのは初めてなんですが、最近よく耳にするのは、「いいもの Node.js があります。私はjQueryやJavaScript全般を扱うのが好きなので、Node.jsを使うタイミングをどのように判断したらよいのか、考えずにはいられません。私が考えているWebアプリケーションは次のようなものです。 ビットリー - あるコンテンツを取得し、それをアーカイブする。

ここ数日の宿題の中から、以下のような情報を得ました。Node.js

  • は、通常のウェブサーバーとして実行可能なコマンドラインツールで、JavaScriptプログラムを実行することができます。
  • を利用する。 V8 JavaScriptエンジン
  • は、同時に複数のことを行う必要がある場合に非常に有効です。
  • はイベントベースなので、すべての素晴らしい Ajax -のようなものをサーバー側で行うことができます。
  • ブラウザとバックエンドの間でコードを共有することができます。
  • MySQL と対話する

私が出会ったソースをいくつか紹介します。

Node.jsは、ほぼそのままの状態で アマゾンのEC2 のような強力な王者ではなく、Node.jsを必要とするのはどのような種類の問題なのかを理解しようとしているのです。 PHP , Python および ルビー . 私は、それが本当にその言語に関する専門知識に依存していることを理解していますが、私の質問は、より一般的なカテゴリに分類されます。特定のフレームワークをいつ使うか、どのようなタイプの問題に特に適しているか?

どのように解決するのですか?

Node.jsの何がすごいのか、うまくまとめてくれましたね。私が感じたのは、Node.jsは、ブラウザからサーバへの接続を持続的に維持したいアプリケーションに特に適しているということです。というテクニックを使って long-polling" を使えば、ユーザーにリアルタイムで更新情報を送るアプリケーションを書くことができます。ウェブの巨人の多くでロングポーリングを行うことで、例えば ルビーオンレイルズ または Django というのも、アクティブなクライアントが1つずつサーバーのプロセスを消費していくため、サーバーに膨大な負荷がかかるからです。この状況は ターピット 攻撃を受ける。Node.jsのようなものを使うと、サーバーは開いている接続ごとに別々のスレッドを維持する必要がありません。

これはつまり ブラウザベースのチャットアプリケーション Node.jsでは、システムリソースをほとんど消費せずに、多くのクライアントにサービスを提供することができます。このような長いポーリングがしたいときはいつでも、Node.jsは素晴らしい選択肢です。

RubyとPythonには、この種のことを行うためのツールがあることを述べておく( イベントマシン ねじれ しかし、Node.jsはそれを非常にうまく、しかも一からやってのけたのです。JavaScriptは、コールバックベースの並行処理モデルに非常に適しており、この点では優れています。また、クライアントとサーバーの両方にネイティブなJSONでシリアライズとデシリアライズができるのは、かなり気の利いた話です。

これは素晴らしい質問ですね。

Node.jsは、クライアントとサーバーの垣根を越えて多くのコードを再利用するような状況にも適していることを指摘しておく必要があります。その Meteorフレームワーク 多くの人が、これがウェブ開発の未来になるかもしれないと提案しています。その大きな理由は、データをどのように再構築するかを考える時間を減らし、ブラウザで実行されるコードが簡単にデータを操作して、それを受け渡すことができるようにすることです。

Pyramidとlong-pollingに関する記事です。geventの助けを借りれば、とても簡単にセットアップができることがわかります。 PyramidによるTicTacToeとロングポーリング .