ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js では何ができるのでしょうか?数分でわかるnode.jsの機能の概要

Node.js では何ができるのでしょうか?数分でわかるnode.jsの機能の概要

寻∝梦
寻∝梦オリジナル
2018-09-05 14:11:048915ブラウズ

この記事ではnode.jsの定義を中心に紹介し、node.jsの役割についてもまとめていますので、ぜひ一緒に読んでみてください

まずは見てみましょう。 Node.js で何ができるか見てみましょう。

これは、node のより正式な紹介です

Node.js は、Chrome V8 エンジンに基づく JavaScript 実行環境です。

Node.js はイベント駆動型のノンブロッキング I/O モデルを使用しており、軽量かつ効率的です。 (イベントドリブン:イベントトリガープロセスにおける意思決定の戦略。簡単に言えば、現時点で現れているものを追跡し、それを解決するために利用可能なリソースを呼び出すことで、継続的に現れ続けるものを解決すること)を解決し、物事の蓄積を防ぐことができます)

Node.js のパッケージ マネージャー npm は、世界最大のオープンソース エコシステムになりました。さらに詳しく知りたい場合は、PHP 中国語 Web サイトにアクセスしてくださいnode.js ビデオ チュートリアル

ここで、nodejs の関数の概要を見てみましょう:

node.js。高速、高パフォーマンス、高い開発効率、幅広いアプリケーション

他の人は通常漠然と次のように言います:node.js にはノンブロッキング、イベント駆動型 I/O などの機能があり、高い同時実行性が可能です。 (高い同時実行性) ポーリング (Polling) と Comet で構築されたアプリケーションが可能になります。

ここまで説明を読んでもよくわからないと感じた場合は、node.js を簡単かつ大雑把に理解できるようお手伝いします。

ブラウザがウェブサイトにリクエストを送信するプロセスは、あまり変わっていません。ブラウザが Web サイトにリクエストを送信するとき。サーバーはリクエストを受信し、リクエストされたリソースの検索を開始します。必要に応じて、サーバーはデータベースにもクエリを実行し、最終的に応答結果をブラウザに送り返します。

ただし、従来の Web サーバー (Apache など) では、リクエストごとにサーバーがリクエストを処理するための新しいプロセスを作成します。

その後にアヤックスが登場しました。 Ajax を使用すると、毎回完全な新しいページをリクエストする必要がなく、毎回必要なページ情報の一部のみをリクエストします。これは明らかに改善です

。しかし、FriendFeed (友達のニュースを更新する Renren に似た Web サイト) のようなソーシャル ネットワーキング サイトを構築したい場合、友達がいつでも新しいステータスをプッシュし、あなたのニュースがリアルタイムで自動的に更新されます。

この要件を達成するには、ユーザーがサーバーとの効果的な接続を維持できるようにする必要があります。現時点で最も簡単な実装方法は、ユーザーとサーバーの間で長いポーリングを維持することです。

HTTP リクエストは継続的な接続ではありません。リクエストを 1 回行うと、サーバーが 1 回応答して終了します。ロング ポーリングは、HTTP を使用して永続的な接続をシミュレートする手法です。具体的には、ページが読み込まれている限り、サーバーからの応答が必要かどうかに関係なく、サーバーに Ajax リクエストを送信します。

このリクエストは通常​​の Ajax リクエストとは異なり、サーバーは情報を直接返すことはなく、サーバーが情報を送信する時期が来たと判断するまで待機してから応答します。たとえば、友人が新しいメッセージを投稿すると、サーバーはその新しいメッセージを応答としてブラウザに送信し、ブラウザはページを更新します。ブラウザは応答を受信して​​更新した後、新しいリクエストをサーバーに送信しますが、このリクエストにはすぐには応答しません。そこで、上記の手順を繰り返し始めました。この方法を使用すると、ブラウザは常に応答を待ち続けることができます。上記のプロセスにはまだ非永続的な HTTP のみが含まれていますが、一見継続的な接続状態をシミュレートしました

従来のサーバー (Apache など) を見てみましょう。新しいユーザーが Web サイトに接続するたびに、サーバーは接続を開く必要があります。各接続にはプロセスが必要ですが、これらのプロセスはほとんどの時間アイドル状態です (たとえば、友人が新しいニュースを送信するのを待ったり、友人がメッセージの送信を完了してからユーザーに応答したりするのを待ったり、データベースが戻るのを待ったりします)クエリ結果など)。

これらのプロセスはアイドル状態ですが、依然としてメモリを占有します。これは、ユーザー接続の数が一定の規模まで増加すると、サーバーがメモリ不足になり、崩壊する可能性があることを意味します。

この状況を解決するにはどうすればよいですか?解決策は、上で述べたとおり、ノンブロッキングでイベント駆動型です。これらの概念は、実際、私たちが話しているシナリオを理解するのはそれほど難しいことではありません。

ノンブロッキングサーバーをループとして考えると、このループは実行され続けます。新しいリクエストが来ると、このループはリクエストを受信し、そのリクエストを他のプロセスに渡し (データベース クエリを実行するプロセスに渡すなど)、コールバックで応答します。それが完了すると、ループは実行を継続し、他のリクエストを受信します。このまま降りてください。サーバーは、以前のようにデータベースが結果を返すのを待ちません。

データベースが結果を返すと、ループは結果をユーザーのブラウザに送り返し、実行を継続します。こうすることで、サーバーのプロセスがアイドル状態で待機することがなくなります。したがって、理論的には、同時にデータベース クエリとユーザー リクエストの数に制限はありません。サーバーは、ユーザー側でイベントが発生した場合にのみ応答します。これはイベント駆動型です。

FriendFeed は、Python ベースのノンブロッキング フレームワーク Tornado (Zhihu もこのフレームワークを使用しています) を使用して、上記の新しいニュース機能を実装します。ただし、Node.js は前者よりもさらに優れています。

Node.js アプリケーションは JavaScript を通じて開発され、Google の異常な V8 エンジンで直接実行されます。 Node.js を使用すると、クライアントのリクエストがサーバー内でブロックを引き起こす可能性のあるコードを実行することを心配する必要がありません。 JavaScript 自体がイベント駆動型のスクリプト言語であるためです。考えてみると、フロントエンドの JavaScript を書くときは、イベント処理とコールバック関数を扱うことがほとんどです。 JavaScript 自体はイベント処理に特化した言語です。

Node.js はまだ初期段階にあります。 Node.js に基づいてアプリケーションを開発する場合は、おそらく非常に低レベルのコードを記述する必要があります。

しかし、次世代のブラウザでは間もなく WebSocket テクノロジーが採用され、ロングポーリングも廃止されるでしょう。 Web 開発において、Node.js のようなテクノロジーは今後ますます重要になるでしょう。

上記はこの記事のnode.jsの概要です。非常に詳しく説明されているので、ぜひ読んでください。さらに詳しく学びたい学生は、PHP 中国語 Web サイトにアクセスしてくださいNode.js 開発マニュアルコラム

[編集者の推奨]

CSS でフォ​​ントをカスタマイズするにはどうすればよいですか? HTMLのテキストフォントスタイルの紹介

HTMLベースタグの使い方は? HTMLベースタグの使い方まとめ

以上がNode.js では何ができるのでしょうか?数分でわかるnode.jsの機能の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。