[解決済み] Node.jsを使うタイミングをどう判断するか?
質問
こういうのは初めてなんですが、最近よく耳にするのは、「いいもの 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とロングポーリング .
関連
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
JavaScriptのgetElementById()メソッド入門
-
jq は html ページとデータを動的に分割する。
-
[解決済み] node.jsでファイルを1行ずつ読み込む?
-
[解決済み】node.js vs ASP.NET Core パフォーマンステストの予期せぬ結果
-
[解決済み] Node.jsを使う理由とタイミングは?重複