Node.jsの概要、ブラウザとNode.jアーキテクチャの違い、Nodeのインストールと管理、JSコードの実行方法、Nodeの入出力、グローバルオブジェクト、

1_Node.jsの紹介

1.1_コン​​セプト

Node.js の公式定義: Node.js は、V8 JavaScript エンジンに基づく JavaScript ランタイム環境です。

つまり、Node.js は V8 エンジンに基づいて JavaScript コードを実行しますが、V8 エンジンだけではありません。

  • V8 は Chrome であろうと Node.js であろうと、あらゆる C++ アプリケーションに埋め込むことができることはわかっています。実際、V8 エンジンは JavaScript コードを実行するために埋め込まれています。
  • しかし、Chrome ブラウザでは、HTML、CSS などの関連レンダリング エンジンを解析してレンダリングする必要があるほか、ブラウザの操作をサポートする API やブラウザ独自のイベント ループなどを提供する必要もあります
  • さらに、Node.js では、ファイル システムの読み取り/書き込み、ネットワーク IO、暗号化、ファイルの圧縮と解凍など、いくつかの追加操作が必要です。

1.2_ ブラウザと Node.j アーキテクチャの違い

ここに画像の説明を挿入


Node.js アーキテクチャ

書かれた JavaScript コードは V8 エンジンを通過し、次に Node.js のバインディングを通過して、タスクを Libuv のイベント ループに置きます。

  • libuv (Unicorn Velociraptor - ユニコーン ヴェロキラプトル) は、C 言語で書かれたライブラリです。
  • libuv は、イベント ループ、ファイル システムの読み取りおよび書き込み、ネットワーク IO、スレッド プールなどを提供します。

ここに画像の説明を挿入


1.3_Node.js アプリケーション シナリオ

Node.js の急速な発展により、企業は Node.js テクノロジーにますます注目するようになり、通常、フロントエンドの採用、特に上級フロントエンド開発エンジニアにとって Node.js は必須のスキルです。

  • アプリケーション 1: 現在、フロントエンド開発ライブラリはノード パッケージの形式で管理されています。
  • アプリケーション 2: npm、yarn、および pnpm ツールは、フロントエンド開発で最もよく使用されるツールになっています。
  • アプリケーション 3: Node.js を Web サーバー開発、ミドルウェア、プロキシ サーバーとして使用する企業が増えています。
  • アプリケーション 4: 多くのプロジェクトでは、フロントエンドとバックエンドのレンダリング用に同型アプリケーションを完成させるために Node.js を使用する必要があります。
  • アプリケーション 5: 上級フロントエンド エンジニアは、プロジェクト用のスクリプト ツールを作成する必要があります (フロントエンド エンジニアは通常、スクリプトを作成するために Python やシェルではなく JavaScript を使用します)。
  • アプリケーション 6: 多くの企業がデスクトップ アプリケーションの開発に Electron を使用しています。

2_ノードのインストールと管理

2.1_インストール

Node.js は 2009 年に誕生し、現在 2 つのバージョンがあります。

  • LTS バージョン: (長期サポート、長期サポート) は比較的安定しており、オンライン環境でこのバージョンを使用することをお勧めします。
  • 現在のバージョン: 多くの新機能を含む最新の Node バージョン。

バージョンを選択するにはどうすればよいですか?

  • 使い方を学び、現在のバージョンを選択してください。
  • 会社によって開発されたため、LTS バージョンを選択することをお勧めします (仕事用には LTS バージョンを選択してください)。

ノードのインストール方法:

  • Mac の homebrew、Linux の yum および dnf など、オペレーティング システム上のソフトウェア管理ツールを利用します。
  • 対応するインストール パッケージを直接ダウンロードしてダウンロードしてインストールします。

ダウンロードとインストールを選択し、オペレーティング システムに対応するインストール パッケージをダウンロードして直接インストールします。

  • 公式ウェブサイト: Node.js (nodejs.org)

  • Windows では .msi インストール パッケージが選択され、Mac では .pkg インストール パッケージが選択され、Linux では若干の選択が行われます。

  • 環境変数はインストール プロセス中に構成されます (コマンド ラインで使用できます)。

  • そして、npm (Node Package Manager) ツールがインストールされます


2.2_Node バージョン ツール

実際の開発および学習では、開発または学習に使用する Node バージョンは 1 つだけです。

ただし、複数のバージョンを迅速に更新または切り替えたい場合は、いくつかのツールを使用できます。

  • nvm:ノードバージョンマネージャー;
  • n: Node.js バージョンを対話的に管理 (Node.js バージョンを対話的に管理)

問題が 1 つあります。どちらのツールもウィンドウをサポートしていません。

  • n:n は Windows ではネイティブにサポートされていません。
  • nvm:nvm は Windows をサポートしていません

Windowsをインストールするにはどうすればよいですか?

  • nvm の場合、GitHub に対応するウィンドウ バージョンがあります: https://github.com/coreybutler/nvm-windows
  • 管理者としてコマンドプロンプトを開きます
  • nvm install latest最新のノード バージョンを次のようにインストールします。
  • nvm list現在インストールされているすべてのバージョンを表示します
  • nvm useバージョンを切り替える

下図の例

ここに画像の説明を挿入


2.3_バージョン管理ツール: n

nをインストール: npmを使用して直接インストールします。

#ツールのインストール
npm install -gn

#インストールされているバージョンを表示します
n --version

最新の lts バージョンをインストールします。
前に追加した sudo は権限に関する質問です。両方のバージョンをインストールでき、n を使用して 2 つのバージョンをすばやく切り替えることができます。

# 最新の 1ts バージョン
n ltsをインストールします

#最新バージョン
n 最新をインストールします

# すべてのバージョンを表示
n


3_JavaScript コードの実行

JavaScript コードを保存する js ファイルを作成します。それを実行するにはどうすればよいですか?

これを行うには現在 2 つの既知の方法があります。

  • コードをブラウザに渡して実行します。
  • 実行のためにコードをノード環境にロードします。

js コードは実行のためにブラウザに渡されます。

  • ブラウザに HTML コードを読み込ませて解析させる必要があるため、HTML ファイルを作成する必要があります。
  • HTML の script タグを通じて js ファイルを導入します。
  • ブラウザが script タグに遭遇すると、src に従って JavaScript コードをロードして実行します。

js ファイルは実行のためにノードに渡されます。

  • まず、Node.js 環境をコンピューターにインストールする必要があります。環境変数はインストール プロセス中に自動的に構成されます。
  • 通過できる端末コマンド対応する js ファイルをロードして実行するには、node js ファイルを使用します。

補足:VScodeのターミナルを開く方法

1つ目: ショートカットキー Ctrl + ~

2 番目の方法: ファイルを選択し、右クリックして、[統合ターミナルで開く] をクリックします。
ここに画像の説明を挿入

3 番目の方法: VSCode ページの上部にあるオプションで、[ターミナル] をクリックし、[新しいターミナル] をクリックします。

ここに画像の説明を挿入


4_ノード入出力

4.1_REPL

REPL は Read-Eval-Print Loop の略称で、「読み取り評価出力」ループと訳されます。シンプルで対話型のプログラミング環境です。

実際、ブラウザ コンソールは REPL とみなすことができます。
Node は、単純なコードを実行できる REPL 環境も提供します。

端末のデモは次のとおりです。

ここに画像の説明を挿入

ブラウザのデモは次のとおりです。

ここに画像の説明を挿入


4.2_Node プログラムにパラメータを渡す

通常の状況では、ノード プログラムを実行し、対応するファイルを直接フォローします。

node test.js

ただし、場合によっては、ノード プログラムの実行中に、いくつかのパラメーターをノードに渡したい場合があります。

node test.js  a=3 b=4

この方法でプログラムを使用する場合は、プログラム内で渡されたパラメーターを取得する必要があることを意味します。

  • パラメータの取得は実際にはプロセスの組み込みオブジェクト中的;
  • この組み込みオブジェクトを直接印刷すると、特別な情報が含まれます。バージョン、オペレーティング システムなどのその他の情報は、自分で確認できます。

ここで、最初にargvプロパティを見つけます。これは、必要なパラメータを含む配列であることがわかります。

補足: argv の由来
C/C++ プログラムの main 関数では、実際に次の 2 つのパラメータを取得できます。

  • argc: 引数カウンターの略称、渡されるパラメーターの数。
  • argv: 引数ベクトル (vector、vector) の略称、渡される特定のパラメーター。
    • ベクトルの訳語はベクトルを意味し、プログラム内のデータ構造を表します。
    • C++ と Java にはそのようなデータ構造があり、これは配列構造です。
    • これは JavaScript の配列でもあり、パラメーター情報を格納します。

コード内で、これらのパラメータ情報をトラバースして使用します。

//·获取参数
console.log(process.argv);
process.argv.forEach( item =>{
    
    
console.log(item);
});


4.3_ノード出力

console.log : コンテンツを入力する最も一般的な方法: console.log

console.clear : コンソールをクリアします: console.clear

console.trace: 関数の呼び出しスタックを出力します: console.trace

他にもいくつかの方法やコンソール方法があり、以下の Web サイトで学習および調査できます。
https://nodejs.org/dist/latest-v16.x/docs/api/console.html


5_グローバルオブジェクト

5.1_ 共通グローバルオブジェクト

ノードは、いくつかの操作を容易にするためにいくつかのグローバル オブジェクトを提供します。

  • これらのグローバル オブジェクトを最初から 1 つずつ学習する必要はありません。
  • 一部のグローバル オブジェクトは一般的には使用されません。
  • いくつかのグローバルオブジェクトについては、今後の研究で言及される予定です。

processオブジェクト: プロセスは、ノードの動作環境、パラメータ情報など、ノード プロセス内の関連情報を提供します。

consoleオブジェクト: 入力内容の以前の説明で学習した、簡単なデバッグ コンソールを提供します。
詳細については、公式 Web サイトのドキュメントを参照してください: https://nodejs.org/api/console.html

タイマー関数: Node でタイマーを使用するにはいくつかの方法があります。

  • setTimeout(callback, late[, ...args]): コールバックは遅延ミリ秒後に 1 回実行されます。
  • setInterval(callback, late[, ...args]): コールバックは遅延ミリ秒ごとに繰り返し実行されます。
  • setImmediate(callback[, ...args]): callbackI/O イベント後のコールバックの「即時」実行。これと setTimeout(callback, 0) の違いについては、イベント ループの段階に関係するため、ここでは説明しません。
  • process.nextTick(callback[, ...args]): 次のティック キューに追加され、イベント ループも含まれます。

5.2_特別なグローバル オブジェクト

  • これらのグローバル オブジェクトは実際にはモジュール内の変数ですが、各モジュールにはそれらがあり、グローバル変数のように見えます。
  • コマンドライン対話では使用できません。
  • 含まれるもの: __ dirname__filename、exports、モジュール、require()

2 つのバーの下に 2 つの下側バーがあります

__dirname: 現在のファイルが存在するパスを取得します。ただし、次のファイル名は含まれません。

__filename: 次のファイル名を含む、現在のファイルのパスとファイル名を取得します。


5.3_グローバルオブジェクト

Global はグローバル オブジェクトです。実際、フロントエンドで言及されているプロセス、コンソール、setTimeout などはすべてグローバルに配置されます。

  • 新しい標準には、globalThis もあり、これもグローバル オブジェクトを指します; globalThis === global
  • ブラウザのウィンドウに似ています。

グローバルとウィンドウの違い

  • ブラウザでは、document、setInterval、setTimeout、alert、console などのグローバル変数がウィンドウ上に表示されます。
  • Nodeにはグローバルプロパティもあり、他にもたくさんのオブジェクトがあるようです。
  • ただし、ブラウザーで実行される JavaScript コードは、最上位スコープの var によってプロパティが定義されている場合、デフォルトで window オブジェクトに追加されます。
  • ただし、ノードでは、var を介して変数を定義すると、現在のモジュールに変数が含まれるだけで、グローバルには配置されません。






































グローバル プロパティであり、他にも多くのオブジェクトが含まれているようです。

  • ただし、ブラウザーで実行される JavaScript コードは、最上位スコープの var によってプロパティが定義されている場合、デフォルトで window オブジェクトに追加されます。
  • ただし、ノードでは、var を介して変数を定義すると、現在のモジュールに変数が含まれるだけで、グローバルには配置されません。





































おすすめ

転載: blog.csdn.net/qq_54075517/article/details/132011549