目次
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 を介して変数を定義すると、現在のモジュールに変数が含まれるだけで、グローバルには配置されません。