Node.js の 4 つの JavaScript 概念の詳細な説明
Node.js の 4 つの JavaScript 概念の詳細な説明
フルスタック アプリケーションを構築するために 1 つのプログラミング言語を知るだけで済むとしたら、素晴らしいと思いませんか?このアイデアを現実にするために、Ryan Dahl はnode.js を作成しました。 Node.js は、Chrome の強力な V8 JavaScript エンジン上に構築されたサーバー側フレームワークです。元々は C++ で書かれていましたが、アプリケーションは JavaScript を通じて実行されます。
このようにして、問題は解決されます。 1 つの言語ですべてを支配できます。さらに、アプリケーション全体でこの 1 つの言語を使用するだけで済みます。したがって、node.js について深く理解する必要があります。それがこの記事の内容です。
node.jsを使いこなすには、次の4つの基本概念が必要です。できるだけ短いストーリーで紹介していきます。
1. ノンブロッキングまたは非同期 I/O
Node.js はサーバー側のフレームワークであるため、その主な仕事の 1 つはブラウザーのリクエストを処理することです。従来の I/O システムでは、前のリクエストからの応答 (HTML ページ) が到着するまで、現在のリクエストは発行されません。これがブロッキング I/O と呼ばれる理由です。サーバーは現在のリクエストを処理するために他のリクエストをブロックするため、ブラウザは待機します。
Node.js は、この I/O 原則に従っていません。リクエストに時間がかかる場合、Node.js はリクエストをイベント ループに送信し、コール スタック内の次のリクエストの処理を続けます。保留中のリクエストの処理が完了すると、Node.js に通知され、ブラウザ上に応答が表示されます。
これを理解するために架空の例を使用してください:
I/O のブロック
// take order for table 1 and wait... var order1 = orderBlocking(['Coke', 'Iced Tea']); // once order is ready, take order back to table. serveOrder(order1); // once order is delivered, move on to another table. // take order for table 2 and wait... var order2 = orderBlocking(['Coke', 'Water']); // once order is ready, take order back to table. serveOrder(order2); // once order is delivered, move on to another table. // take order for table 3 and wait... var order3 = orderBlocking(['Iced Tea', 'Water']); // once order is ready, take order back to table. serveOrder(order3); // once order is delivered, move on to another table.
このレストランの例では、ウェイターはメニューを渡し、注文が完了するのを待ち、テーブルに戻って規定に従って料理を提供します。メニュー。現在の顧客が注文している間、ウェイターは近くで待機しており、他の顧客のメニューは受け付けません。
ノンブロッキング I/O
// take order for table 1 and move on... orderNonBlocking(['Coke', 'Iced Tea'], function(drinks){ return serveOrder(drinks); }); // take order for table 2 and move on... orderNonBlocking(['Beer', 'Whiskey'], function(drinks){ return serveOrder(drinks); }); // take order for table 3 and move on... orderNonBlocking(['Hamburger', 'Pizza'], function(food){ return serveOrder(food); });
この例では、ウェイターはメニューを取得し、シェフに通知し、別のメニューを取得するために戻ります。最初のメニューを完成させる過程で、彼は現在の顧客を順番に提供するだけでなく、他の顧客の注文も受け入れます。ウェイターは他の顧客からの注文をブロックして時間を無駄にすることはありません。
2. プロトタイプ
プロトタイプは JavaScript における複雑な概念です。ただし、Node.js ではプロトタイプを何度も使用するため、すべての JavaScript 開発者はこの概念を理解する必要があります。
Java や C++ などの古典的な継承を実装する言語、コードの再利用を目的とした言語では、まずクラスを作成し、次にそのクラスからオブジェクトを作成するか、そのクラスを拡張する必要があります。ただし、JavaScript にはクラスという概念が存在しません。まず JavaScript でオブジェクトを作成し、次にこのオブジェクトから独自のオブジェクトを追加するか、新しいオブジェクトを作成します。これは、原型の継承と原型による実現と呼ばれます。
すべての JavaScript オブジェクトは、プロパティを継承できるプロトタイプ オブジェクトにリンクされています。プロトタイプは他の OO 言語のクラスに似ていますが、プロトタイプ自体がオブジェクトでもあるという点が異なります。すべてのオブジェクトは Object.prototype にリンクされており、Object.prototype には事前定義された JavaScript が付属しています。
obj.propName または obj['propName'] を介してプロパティを検索し、そのオブジェクトに obj.hasOwnProperty('propName') を介してチェックできるプロパティがない場合、JavaScript ランタイムはそのプロパティを検索します。そのプロトタイプ オブジェクトの属性。プロトタイプ オブジェクトにそのようなプロパティがない場合は、一致するものが見つかるか、Object.prototype に到達するまで、そのプロトタイプが順番にチェックされます。プロパティのプロトタイプ チェーンが存在しない場合、値は未定義になります。
次のサンプル コードでこの概念を理解してください:
if (typeof Object.create !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); }; var otherPerson = Object.create(person);
新しいオブジェクトを作成するときは、そのプロトタイプとなるオブジェクトを選択する必要があります。ここでは、Object 関数にメソッドを追加します。このメソッドは、別のオブジェクトをプロトタイプとして使用して新しいオブジェクトを作成し、それをパラメーターとして渡します。
新しいオブジェクトを変更しても、そのプロトタイプは影響を受けません。ただし、プロトタイプ オブジェクトに変更を加えると、その変更はそのプロトタイプに基づくすべてのオブジェクトに表示されます。
プロトタイプは複雑な概念です。これについては別の記事で詳しく説明します。
3. モジュール
Java のパッケージに触れたことがあるなら、Node.js のモジュールも例外ではありません。そうでなくても、心配する必要はありません。モジュールは、特定の目的のためのコードを含む単純な JavaScript ファイルです。モジュール パターンは、コードを簡単にナビゲートして使用できるようにするために使用されます。 module 属性を使用するには、Java クラスにパッケージをインポートするのと同じように、JavaScript ファイルでそれを要求する必要があります。
node.jsには2種類のモジュールがあります。
コア モジュール - これらのモジュールは、Node.js ライブラリでプリコンパイルされています。コア モジュールの目的は、頻繁に発生する反復的なコード スニペットを開発者に提供することです。コード スニペットが利用できない場合、開発者は同じコードを何度も書かなければならない状況に陥ります。一般的なコア モジュールには、HTTP、URL、EVENTS、FILE SYSTEM などがあります。
用户定义模块——用户定义模块是开发人员在应用程序内创建用于特定目的的模块。当核心模块不能满足期望功能的时候就需要用户定义模块。
模块通过require函数提取。如果它是一个核心模块,那么参数仅仅是模块的名称。如果它是一个用户自定义模块,那么参数就是该模块在文件系统中的路径。例如:
// extract a core module like this var http = require('http); // extract a user defined module like this var something = require('./folder1/folder2/folder3/something.js');
4.回调函数
在JavaScript中,函数被认为是第一类对象。这意味着你可以对这些函数做所有可对常规对象做的操作。你可以赋值函数给变量,作为参数传递函数给方法,作为对象属性声明函数,甚至从函数返回函数。
回调函数是JavaScript中的匿名函数,它可以作为参数传递给其他函数,要么被执行或返回自函数稍后执行。这是回调函数——这个使用最广的函数编程范式的基础。
当我们将回调函数作为参数传递给另一个函数的时候,我们只能传递函数定义……换言之就是,我们不知道这个回调函数什么时候会执行。这完全取决于调用函数的机制。它会在以后的某个时间点“回调”,因此而得名。这也是非阻塞或Node.js异步行为的唯一基础,如下例所示。
setTimeout(function() { console.log("world"); }, 2000) console.log("hello");
这是回调函数最简单的例子之一。我们将一个匿名函数作为一个参数传递,这个参数只需在控制台上记录一些输出到setTimeout函数。它是唯一的函数定义,但是不知道何时执行。这需要经过2秒后,通过第二个参数,调用setTimeout函数来决定。
首先,第二个日志语句记录输出到控制台,然后,2秒钟后,回调函数中的日志语句记录输出。
// output hello world
以上がNode.js の 4 つの JavaScript 概念の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。
