[Javascript] Node.JSの特徴


Node.jsは何ですか。


すべてのオペレーティングシステムがJava言語を使用して仮想マシン環境でRuntimeを実行しているように、Node.JSはChrome V 8エンジンを提供し、Webブラウザに依存するJavaScriptの外で実行することができ、複数のオペレーティングシステム環境で実行できる環境を提供する.これはノードです.JSとして定義できます.

呼び出しスタックとイベントループ

function first() {
   second()
   console.log('첫 번째 실행')
}
function second() {
   third()
   console.log('두 번째 실행')
}
function third() {
   console.log('세 번째 실행')
}
first()
以上のコードの出力は、3回目、2回目、または1回目の実行で実行されます. この部分の実行順序を説明するために、コールスタック内のデータ構造にはfirst()、second()、third()が含まれている.スタックの特徴は「後入先出」(Last In First Out)です.
上記のコードはfirst、second、third関数を定義し、first関数から呼び出します.フィルタ接続を実行すると、最初の関数が呼び出されますが、2番目の関数は最初の関数から呼び出され、2番目の関数は3番目の関数から呼び出されます.3番目の関数はconsoleです.logを実行して最上位に配置し、スタックから終了します.そして2番目のゲーム機logが実行され、最終的には最初のコンソールになります.ログは最後に実行されます.結果は次のとおりです.
function run() {
   console.log(`3초 후 실행함`)
}
console.log(`시작`)
setTimeout(run, 3000)
console.log(``)
以上のコードの出力は以下のようになります.

settimeoutは、遅延時間によって関数を実行するタイマ関数です.時間は固定されていますが、実際にはJavaScriptには非同期処理のための関数がたくさんあるため、イベントループは上記の例で説明します.実際には、同期処理を行うと、コンテキストで呼び出しスタック構造で最新の処理の部分が最初に処理されることがわかります.次のコンソールlogで撮影した簡単なキーワード「開始」と「終了」の後、settimeoutというタイマー関数で「3秒後に実行」するキーワードが最後の操作であることがわかります.この場合、非同期結果の部分がタスクキューにロードされ、キューはデータ構造上で「最初の入力最初の出力」特性を有します.
このとき,3秒後にスタックをタスク実行に移すかどうかを管理する人が「イベントループ」である.スタック、タスクキュー、イベントループの概要を説明します.

Node Module System


ほとんど
<script src='{소스위치}">

// 참조해야 하는 constants.js 파일
module.exports = {
    sayHello : 'Hello!',
    name : 'CaptainChain'  
}
宣言された変数およびオブジェクトは、次のコードを参照できます.
// funcModule.js
const { sayHello, name } = require('{파일위치}');
console.log(`${name}${sayHello}`)

Single Thread, Event Driven, Non-Blocking I/O


Node.jsは上記の特性を有する.
単一のThread、Event Driven、およびブロックされていないI/Oを簡単に整理します.
  • シングルThreedとは?
  • まず、JavaScriptでは、単一スレッド処理を採用します.実際には、処理する必要があることが多いと思いますが、一度に1つのことしか処理しない場合は、JavaScriptがマルチスレッドではない理由を自然に考えます.オペレーティングシステムのリソースの割り当てと管理において,JavaScriptタスクの制御は非同期処理によって非常に困難になる可能性があると推測できる.Node.JSは、これらの単一スレッドの欠点を改善し、マルチスレッドと同様に同じ動作を並列に処理できるようにしている.
  • イベントDREVENとは?
  • 上記のスタックとイベントループ、およびタスクキューの概念では、イベントインスペクタは、私がサービスしているサイトを通じて機能別に登録されたリスナーです.これは、上のコードのようにコンソールに直接実行して終了するプログラムではなく、誰が私が作成したサイトに入るか分からないまま待っています.このとき各アクティビティの機能は定義されていますたとえば、アクセスする場合はtext/html contentTypeを使用してユーザーにページを表示するか、投稿で「賛」ボタンをクリックすると、結果がjson形式でクライアントに送信され、ユーザーが操作が正しいかどうかを知ることができます.一連のイベントの動作を定義し、イベントリスナーに登録します.
  • 非ブロックI/Oとは?
  • デフォルトでは、JavaScriptは単一スレッド方式を採用しています.この場合、非同期処理されたタスクを呼び出しスタックからタスクキューに送信したり、イベントループを介してスタックのI/Oをタスクキューから再インポートしたりする形式をNon-Blockingと呼ぶ.したがって,実行順序に影響を与える挙動を単にブロックレスI/Oと呼ぶことができる.逆に、ロックの場合、同期処理は後続の操作の遅延を引き起こす.
    簡単なノードJSの特徴を知りました.

    Reference


    [Node.JS]ノードは何ですか。どのような機能がありますか。-(1)