Node.js の概要 [注 1]

Node.js の概要

Node.js は、2009 年 5 月にリリースされ、Ryan Dahl によって開発されました。これは、Chrome V8 エンジンに基づく JavaScript 実行環境です。イベント駆動型のノンブロッキング I/O モデルを使用して、サーバー上で JavaScript を実行できます。サイド開発プラットフォーム: JavaScript を、PHP、Python、Perl、Ruby などのサーバーサイド言語と同等のスクリプト言語にします。
Node.js は、いくつかの特別な使用例を最適化し、ブラウザ以外の環境で V8 の実行を向上させるための代替 API を提供します。V8 エンジンは、JavaScript を非常に高速に実行し、非常に優れたパフォーマンスを発揮します。これは、Chrome JavaScript ランタイム上に構築されたプラットフォームです。高速な応答性と容易な拡張性を備えたネットワーク アプリケーションを構築します。

  • フロントエンドコア技術システム

ここに画像の説明を挿入します

  • Node.js はサーバーとして使用できます [小さなプログラム、アプリ、ウェブサイト、ゲーム]
  • 学習内容は以下の通りです。 【知識ポイントが多くなり、より難しくなります】

ここに画像の説明を挿入します

  1. コンピュータの構造
  2. プログラム実行プロセス
  3. プロセスとスレッド
  4. 同期と非同期
  5. IPとポート

Node.jsを学ぶ理由

  1. フロントエンド開発の 3 つの主要なフレームワーク、Vue、React、Angular が密接に関連しています。
    ここに画像の説明を挿入します
  2. 私たちが作成した Web ページに他の人がアクセスできるようにする
  3. その後のフレームワーク学習の基礎を築く

Node.jsとは何ですか?

Node.js は、オープンソースのクロスプレイフォーム JavaScript ランタイム環境です [https://nodejs.org/en/ 公式 Web サイトから引用]
Node.js は、オープンソースのクロスプレイフォーム JavaScript ランタイム環境です。
一般的な説明: Node.js はアプリケーションであり、JavaScript を実行できるソフトウェアの一部です。
誤解: Node.js はプログラミング言語です。Node.js は JavaScript の新しいバージョンです。

Node.jsの役割

ここに画像の説明を挿入します

1. サーバーアプリケーションの開発

ここに画像の説明を挿入しますWeb ページ ファイルの構成: HTML コントロール構造、CSS コントロール スタイル、JavaScript コントロール インタラクションと
サーバー上で実行される nodejs の効果

サーバーは、記述された HTML、CSS、および JavaScript ファイルを保存します。
ユーザーは、URL を介してサーバーにリクエストを送信します。
サーバーはリソースをブラウザーに返し、ブラウザーはリソースを解析して Web サイトのページを表示します。

2. 開発ツールのアプリケーション

ここに画像の説明を挿入します

3. デスクトップアプリケーションの開発

ここに画像の説明を挿入します

  • VSCode: コードエディター
  • Figma: デザインツール
  • Postman: インターフェイス テスト ツール
  • electron: 上記の 3 つのソフトウェアはすべて、node.js の助けを借りて開発された Electron フレームワークに依存しています。
    ここに画像の説明を挿入します

Node.jsのインストール

リンク:Node.js公式サイト[https://nodejs.org/ja]
ここに画像の説明を挿入します

  • LTS:長期保守版

Win+R→cmdと入力→Enter: コマンドプロンプトツールを開きます [コマンドラインツール] 「
node -v」と入力して、node.jsが正常にインストールされているかどうかを監視し、バージョン
ここに画像の説明を挿入します
図を表示します: [C:\Users\Zyf]はコマンド ライン ディレクトリ。node はコマンド名、-v はコマンド パラメータです。

コマンドラインツールについて知る

プログラムはコマンドラインツールで実行できます。
コマンドの構造はコマンド名とコマンドパラメータで構成されます(コマンドパラメータは0以上です)。

コマンドラインを使用して D:/Program Files の内容を表示するにはどうすればよいですか?

#切换工作目录到D盘命令 d:
#查看D盘内容命令 dir
#改变文件夹命令 cd 【切换工作目录】
#将工作目录切换到上一级命令 cd ..

ここに画像の説明を挿入します

説明する 操作する
ドライブ文字を切り替える CD:
作業ディレクトリを切り替える CD
カタログファイルを表示する ディレクトリ
  • dir \s を実行すると、サブフォルダーの内容を含む現在の作業ディレクトリの内容が表示されます。Ctrl +Cでコマンドを終了できます。
  • コマンドラインツールでjsファイルを実行します。現在のファイルディレクトリでnode filename.jsコマンドを実行して、jsファイルを実行します。

Node.js の考慮事項

  1. BOM および DOM API は Node.js では使用できませんが、コンソール API およびタイマー API は使用できます。
  2. Node.js のトップレベル オブジェクトはグローバルであり、globalThis を使用してトップレベル オブジェクトにアクセスすることもできます。

ここに画像の説明を挿入しますJS コア構文: 変数宣言、ループ制御、オブジェクト関数宣言など。

//BOM 
console.log(window);     //ReferenceError: window is not defined
console.log(history);    //ReferenceError: history is not defined
console.log(navigator);  //ReferenceError: navigator is not defined
console.log(location);   //ReferenceError: location is not defined
//DOM
console.log(document);   //ReferenceError: document is not defined
//AJAX
let xhr = new XMLHttpRequest();  //ReferenceError: XMLHttpRequest is not defined

console.log('one'); //one
setTimeout(() => {
    
    
     console.log('two');
 }, 1000); //two

//global 顶级对象
// console.log(global);
// console.log(globalThis);//ES2020
console.log(global === globalThis); //true

バッファの導入と作成

1.コンセプト

バッファは配列に似たオブジェクトで、固定長のバイト シーケンスを表すために使用されます。
バッファは本質的には固定長のメモリ空間であり、特にバイナリ データの処理に使用されます。
ここに画像の説明を挿入します

2.特長

  • バッファサイズは固定されており、調整できません
  • バッファーは優れたパフォーマンスを備えており、コンピューターのメモリ上で直接操作できます。
  • 各要素のサイズは 1 バイト (byte) [1 バイト = 8 ビット]
    ここに画像の説明を挿入します

3.用途

3.1 バッファの作成

Node.js でバッファーを作成する方法:

  1. Buffer.alloc
//创建一个长度为10字节的Buffer,相当于申请了10字节的内存空间,每个字节的值为0
let buf_1 = Buffer.alloc(10);	//Buffer是Nodejs内置模块,全局变量;alloc【分配】是方法
console.log(buf_1);				//结果为<Buffer 00 00 00 00 00 00 00 00 00 00>
  1. Buffer.allocUnsafe
//创建一个长度为10字节的Buffer,buffer中可能存在旧的数据,可能会影响执行结果,所以叫Unsafe
let buf_2 = Buffer.allocUnsafe(10);	
console.log(buf_2);	
  1. バッファーフロム
//通过字符串创建buffer
let buf_3 = Buffer.from('hello');//字母转换成Unicode表的数字的16进制
console.log(buf_3);				//结果为<Buffer 68 65 6c 6c 6f>
//通过数组创建buffer
let buf_4 = Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf_4);				//结果为<Buffer 69 6c 6f 76 65 79 6f 75>

ASCII テーブルと互換性のある Unicode テーブル
ここに画像の説明を挿入します

3.2 バッファと文字列の変換

toStringメソッドを使用して、バッファを文字列に変換できます。

let buf_4 = Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf_4.toString()); //结果为iloveyou

toString は、デフォルトでは utf-8 エンコーディングに従って変換されます。

3.2 バッファの読み書き

バッファは[ ]を通じてデータを直接処理できます。

//读取 []
// let buf_3 = Buffer.from('hello');
console.log(buf_3[0]);							//结果为104
console.log(buf_3[0].toString(2));				//结果为1101000,真实保存的值为01101000

//修改写入
buf_3[1] = 97;
console.log(buf_3.toString());					//结果为hallo

//溢出
buf_3[0] = 361; //255(10进制) => 1111 1111(2进制),大于255的舍弃高位的数字 0001 0110 1001(2进制) => 0110 1001(2进制) => 105(10进制) => 69(16进制)
console.log(buf_3);								//结果为<Buffer 69 61 6c 6c 6f>

//中文
let buf_5 = Buffer.from('你好');					//utf-8的一个中文字符占3个字节
console.log(buf_5);								//结果为<Buffer e4 bd a0 e5 a5 bd>

注:
1. 変更された値が 255 を超える場合、8 ビットを超えるデータは破棄されます
2. UTF-8 文字は通常 3 バイトを占めます。

コンピュータの基本

コンピュータの基本コンポーネント

ここに画像の説明を挿入します

  • CPU: 中央処理装置。コンピュータの操作と制御の中枢。
  • メモリ: データを保存するための媒体で、読み取りおよび書き込み速度が速く、電源を切るとデータは失われます。
  • ハードディスク:データを保存する媒体で、読み書き速度が遅く、電源を切ってもデータが失われることはありません。
  • マザーボード
  • グラフィックカード、サウンドカード: 信号の処理
  • ヒートシンク
  • 周辺機器: マウス、キーボード、オーディオなど。

プログラム動作の基本的な流れ

オペレーティング システム: Windows、Linux、MacOS は、ハードウェア リソースの管理とスケジュールに使用されるアプリケーションです。(オペレーティング システムはコンピュータのハードディスクにインストールされている必要があります)
ここに画像の説明を挿入します
コンピュータ起動の基本プロセス:
ここに画像の説明を挿入しますプログラム起動の基本プロセス:
ここに画像の説明を挿入します

通常、プログラムはハードディスクに保存され、ソフトウェアのインストールプロセスはプログラムをハードディスクに書き込むプロセスです。
プログラムの実行時には、プログラムがメモリにロードされ、CPU がプログラムを読み取って実行します。

プロセスとスレッド

プロセス: [プログラム実行中]、プロセスはプログラムの実行プロセスです。
Windows システムはタスク マネージャーを通じてプロセスを表示できます

スレッド: スレッドはプロセス内で実行される実行ストリームです。スレッドはプロセスに属します。
プロセスには 1 つ以上のスレッドを含めることができます。
特定のプロセスの下にあるすべてのスレッドを表示します: pslist -dmx pid 番号 [pid 番号はプロセス ID]
注: pslist と入力します。コマンドが認識されない場合は、pslist がインストールされていないことを意味します現在のコンピューター。ツールは Windows の公式 Web サイトからダウンロードできます: https://technet.microsoft.com/en-us/sysinternals/bb896682.aspx。ダウンロードが完了したら、C:\Windows\System32 に解凍します。使用するパス、または環境変数に設定することもできます。

ここに画像の説明を挿入しますここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_41361442/article/details/130937120