Nodejsはjsですか?

Nov 01, 2021 pm 03:34 PM
javascript js nodejs

Nodejs は js ではなく、サーバー上で js を実行できるようにするプラットフォームです。 js (正式名称 JavaScript) はプログラミング言語であり、Node は Chrome V8 エンジンをベースとした JavaScript 実行環境であり、サーバー上で JavaScript を実行できる開発プラットフォームです。

Nodejsはjsですか?

#このチュートリアルの動作環境: Windows7 システム、nodejs バージョン 12.19.0、DELL G3 コンピューター。

Nodejs は js ではなく、サーバー上で js を実行できるようにするプラットフォームです。

Node.js は、2009 年 5 月にリリースされ、Ryan Dahl によって開発されました。これは、Chrome V8 エンジンに基づく JavaScript 実行環境です。イベント駆動型のノンブロッキング I/O モデルを使用して、JavaScript を許可します。 JavaScript を PHP、Python、Perl、Ruby などのサーバーサイド言語と同等のスクリプト言語にするサーバーサイド開発プラットフォーム。

JavaScript は、Node.js テクノロジに基づいてサーバー側プログラミングを実行できます。

Node.js の機能

ノンブロッキング非同期 io

たとえば、次のような場合です。アクセス中 データベースがデータを取得する際には時間がかかります。従来のシングルスレッド処理メカニズムでは、データベースにアクセスするコードを実行した後、スレッド全体が一時停止し、データベースが結果を返すのを待ってから、後続のコードを実行します。つまり、I/O によってコードの実行がブロックされ、プログラムの実行効率が大幅に低下します。

Node.js ではノンブロッキング I/O メカニズムが使用されているため、データベースにアクセスするコードが実行されると、その背後にあるコードがすぐに実行され、データベースの処理コードが結果を返します。をコールバック関数内に配置することでプログラムの実行効率が向上します。

I/O が完了すると、I/O 操作を実行しているスレッドにイベントの形式で通知が送信され、スレッドはこのイベントのコールバック関数を実行します。非同期 I/O を処理するには、スレッドにイベント ループが必要で、未処理のイベントがあるかどうかを常にチェックし、順番に処理します。

ブロッキング モードでは、1 つのスレッドは 1 つのタスクしか処理できません。スループットを向上させたい場合は、マルチスレッドを使用する必要があります。ノンブロッキング モードでは、スレッドは常に計算操作を実行し、このスレッドの CPU コア使用率は常に 100% になります。したがって、これは特に哲学的な解決策です。多くの人を怠けさせるよりも、一人の人が命を危険にさらして死ぬまで働く方が良いのです。

シングルスレッド

Java、PHP、.net などのサーバーサイド言語では、クライアント接続ごとに新しいスレッドが作成されます。各スレッドには約 2MB のメモリが必要です。つまり、理論上、8GB のメモリを搭載したサーバーに同時に接続できる最大ユーザー数は約 4,000 人です。 Web アプリケーションがより多くのユーザーをサポートするには、サーバーの数を増やす必要があり、Web アプリケーションのハードウェア コストも当然増加します。

Node.js は、クライアント接続ごとに新しいスレッドを作成せず、1 つのスレッドのみを使用します。ユーザーが接続すると、内部イベントがトリガーされ、ノンブロッキング I/O およびイベント駆動メカニズムを通じて、Node.js プログラムは巨視的に並列処理されます。 Node.js を使用すると、8 GB のメモリを搭載したサーバーで 40,000 を超えるユーザー接続を同時に処理できます。

さらに、シングル スレッドによってもたらされる利点は、オペレーティング システムにスレッドの作成と破棄に伴う時間のオーバーヘッドがなくなることです。ただし、シングル スレッドには多くの欠点もあります。これについては、Node.js の欠点で詳しく説明します。読み続けてください。

イベント駆動型

Node では、クライアントが接続の確立、データの送信、その他の動作を要求すると、対応するイベントがトリガーされます。 Node では、一度に 1 つのイベント コールバック関数のみを実行できますが、イベント コールバック関数の実行中に他のイベントが発生し、代わりに他のイベントを処理することができます (新しいユーザーの接続など)。元のイベントを実行し続けるコールバック関数この処理メカニズムは「イベント ループ」メカニズムと呼ばれます。

Node.js の最下層は C です (V8 も C で書かれています)。基礎となるコードのほぼ半分は、イベント キューとコールバック関数キューの構築に使用されます。イベント駆動型を使用してサーバー タスクのスケジューリングを完了することは、天才だけが思いつくことです。糸を使った針の先の踊りは、多くの仕事をこなす使命を担っています。

Nodejsはjsですか?

Node.js の本質ともいえるイベントループに注目してください 以下、Node.js 公式サイトより引用

  ┌───────────────────────────┐
┌─>│           timers          │
│  └─────────────┬─────────────┘
│  ┌─────────────┴─────────────┐
│  │     pending callbacks     │
│  └─────────────┬─────────────┘
│  ┌─────────────┴─────────────┐
│  │       idle, prepare       │
│  └─────────────┬─────────────┘      ┌───────────────┐
│  ┌─────────────┴─────────────┐      │   incoming:   │
│  │           poll            │<─────┤  connections, │
│  └─────────────┬─────────────┘      │   data, etc.  │
│  ┌─────────────┴─────────────┐      └───────────────┘
│  │           check           │
│  └─────────────┬─────────────┘
│  ┌─────────────┴─────────────┐
└──┤      close callbacks      │
   └───────────────────────────┘
ログイン後にコピー

Node 公式 Web サイトからのコンテンツの一部を引用します:

注: 各ボックスはイベント ループの「フェーズ」と呼ばれます。

各ステージには、実行されるコールバック FIFO キューがあります。各ステージは独自の方法で特殊ですが、通常、イベント ループが特定のステージに入ると、そのステージに固有の操作が実行され、キューが使い果たされるまでそのステージのキューでコールバックが実行されます。処刑された。キューが使い果たされるか、コールバック制限に達すると、イベント ループは次のフェーズに移行します。
イベント ループに関しては、これが中心的なポイントです。面接官は、特定の実行出力についてよく質問します。私の記事

クロスプラットフォーム を参照してください。

当初、Node は Linux プラットフォーム上でのみ実行できます。その後、Node の開発に伴い、Microsoft はその存在に気づき、Node が Windows プラットフォームとの互換性を実現できるように支援するチームに投資し、v0.6.0 バージョンがリリースされた時点では、Node はすでに Windows プラットフォーム上で直接実行できるようになっていました。ノードは libuv に基づいたクロスプラットフォームです。

Node.js の欠点

単一スレッドによって引き起こされる欠点

Node.js Oneシングルスレッドはメリットも多いですがデメリットもあり、シングルスレッドの弱点は以下の通りです。

  • マルチコア CPU を利用できません

  • エラーによりアプリケーション全体が終了し、非同期 I/O の呼び出しを続行できなくなります

  • 大量の計算により CPU が占有され、非同期 I/O の呼び出しを継続できなくなる

##アプリケーション シナリオNode.js の概要

Node.js の特徴と欠点を紹介し、次に Node.js の適用シナリオについて説明します。

Node.js はどのようなアプリケーションの開発に適していますか?

I/Oは得意、計算は苦手。 Node.js はタスクのスケジューリングに最適であるため、ビジネスで大量の CPU 計算が行われる場合、実際にはこの計算がこの単一スレッドをブロックすることを意味し、これは Node 開発には適していませんが、解決策がないわけではありません。適切な。

Node.js は、アプリケーションが大量の同時 I/O を処理する必要があり、クライアントに応答を送信する前にアプリケーション内で非常に複雑な処理を実行する必要がない場合に非常に適しています。 Node.js は、Web ソケットを操作して、接続が長いリアルタイムの対話型アプリケーションを開発するのにも非常に適しています。

具体的なシナリオは次のように表現できます:

  • 最初のカテゴリ: ユーザー フォーム収集システム、バックグラウンド管理システム、リアルタイム インタラクション システム、検査システム、ネットワーキングソフトウェア、ハイエンド同時実行 Web アプリケーション;

  • 2 番目のカテゴリ: Web、キャンバスなどに基づくマルチプレイヤー オンライン ゲーム;

  • 3 番目のカテゴリ: Web、キャンバスなどに基づくマルチプレイヤー オンライン ゲームカテゴリ : Web ベースの複数人リアルタイム チャット クライアント、チャット ルーム、グラフィック ライブ ブロードキャスト;

  • 4 番目のカテゴリ: シングルページ ブラウザ アプリケーション;

  • 5 番目のカテゴリ: データベースの操作、フロントエンドおよびモバイル端末向けの JSON ベースの API の提供;

  • 6 番目のカテゴリ、...

どの大企業がそれを使用していますか

  • Yahoo: Yahoo は Cooktail フレームワークをオープンし、YUI3 フロントエンド フレームワークの機能を拡張して、 Nodeの助けを借りてサーバー側。

  • Tencent: ノードを長い接続に適用して、リアルタイム機能を提供します。

  • Huapet.com、Mogujie:socket.io を介したリアルタイム通知。

  • #Alibaba: 主な用途は、効率的な分散を実現するための並列 I/O のパフォーマンスです。また、多くのノード フレームワークも開発しています。
  • LinkedIn : モバイル Web サイトでも Node を使用しています
  • NetEase: ゲーム分野では同時実行性とリアルタイム性に対する高い要件があり、NetEase は Node のリアルタイム フレームワーク pomelo
  • をオープンソース化しました

  • お待ちください...
  • [推奨学習: 「
nodejs チュートリアル

」]

以上がNodejsはjsですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

NodejsとTomcatの違い NodejsとTomcatの違い Apr 21, 2024 am 04:16 AM

Node.js と Tomcat の主な違いは次のとおりです。 ランタイム: Node.js は JavaScript ランタイムに基づいていますが、Tomcat は Java サーブレット コンテナです。 I/O モデル: Node.js は非同期ノンブロッキング モデルを使用しますが、Tomcat は同期ブロッキング モデルです。同時実行処理: Node.js はイベント ループを通じて同時実行を処理しますが、Tomcat はスレッド プールを使用します。アプリケーション シナリオ: Node.js はリアルタイム、データ集約型、同時実行性の高いアプリケーションに適しており、Tomcat は従来の Java Web アプリケーションに適しています。

Nodejsとvuejsの違い Nodejsとvuejsの違い Apr 21, 2024 am 04:17 AM

Node.js はサーバー側の JavaScript ランタイムであり、Vue.js は対話型ユーザー インターフェイスを作成するためのクライアント側の JavaScript フレームワークです。 Node.js はバックエンド サービス API 開発やデータ処理などのサーバー側開発に使用され、Vue.js はシングルページ アプリケーションや応答性の高いユーザー インターフェイスなどのクライアント側開発に使用されます。

Nodejs はバックエンド フレームワークですか? Nodejs はバックエンド フレームワークですか? Apr 21, 2024 am 05:09 AM

Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

Nodejs インストール ディレクトリ内の npm ファイルと npm.cmd ファイルの違いは何ですか? Nodejs インストール ディレクトリ内の npm ファイルと npm.cmd ファイルの違いは何ですか? Apr 21, 2024 am 05:18 AM

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

Nodejs はバックエンド開発言語ですか? Nodejs はバックエンド開発言語ですか? Apr 21, 2024 am 05:09 AM

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

Nodejsのグローバル変数とは何ですか Nodejsのグローバル変数とは何ですか Apr 21, 2024 am 04:54 AM

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

NodejsとJavaの間に大きな違いはありますか? NodejsとJavaの間に大きな違いはありますか? Apr 21, 2024 am 06:12 AM

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

NodejsとJavaのどちらを選択しますか? NodejsとJavaのどちらを選択しますか? Apr 21, 2024 am 04:40 AM

Web 開発において Node.js と Java にはそれぞれ長所と短所があり、どちらを選択するかはプロジェクトの要件によって異なります。 Node.js はリアルタイム アプリケーション、迅速な開発、マイクロサービス アーキテクチャに優れており、Java はエンタープライズ グレードのサポート、パフォーマンス、セキュリティに優れています。

See all articles