Node Lecture


How Node.js works

  • 単純ノードは、非同期イベントに基づくJavaScriptランタイム環境である.
  • 非同期とは?

  • プログラムの他の部分(機能または関数)は、相互干渉(ブロック)することなく同時に発生することができる.待っていなくてよかった.
  • 「非同期イベント-ベース」(Event-driven)とは?

  • ノード非同期処理イベントは、前のクライアントの要求が完了する前に、次のクライアントの要求が受信されることを意味する.
  • ノード環境では、イベントはリクエストと見なすことができる.バックエンドサーバを実装するリクエストがHTTPリクエストと同じであると判断した場合は、リクエストとみなす必要はありません.
  • ノードの場合、イベントはフロントエンド(クライアント)からの要求である.
  • シングルスレッドとは?

  • クライアント要求を非同期で実行するためのノードのキー要素
  • JavaScriptは単一スレッドに基づいて非同期で実行されますか?

  • です.JavaScriptは非同期なので、スレッドが1つしかないにもかかわらず、複数のタスクを同時に実行できます.ただし、JavaScript言語自体では非同期操作はサポートされていません.
  • 非同期操作のキー要素はJavaScript言語ではなくブラウザです.(ノード上のlibuvライブラリなど)
  • ブラウザはWeb API、Event Table、Calback Queue、Event Loopなどで構成されており、JavaScriptコードを実行する際のブラウザとの動作は下図で表すことができます.
    コールバック:関数.私が欲しい時に実行します.arr.map((el) => el+1)
    Heap:メモリ割り当ての場所
    Call Stack:実行コード環境のデータ構造を格納し、関数呼び出し時にCall Stackにプッシュします.
    setTimeout(function exec() {
      console.log('second')
    }, 1000);
    Web API:settimoutがコールスタックに入って実行されると、Browser API timerが呼び出されます.DOM、AJAX、settimeoutを含むブラウザが提供するAPI
    Calback Queue、Event Loop、およびEvent Table(図に示す)については、以下に説明する.

    JavaScriptランタイム環境(feat.Chrome V 8エンジン)

  • JavaScriptソースコードをCPUが理解できるマシン言語(ex.0と1からなるバイトコード)に変換し、プログラムメモリを管理するシステム