初心者ノード(1)

1. ノードとは何ですか?

Node.js は、Chrome の V8 JavaScript エンジン上に構築された JavaScript ランタイムです。

互換性の問題に対処する必要はありません 2009.05

1.1NodeはJS動作環境です

js の仕組み:

1. クライアント: js ファイルをインポートし、ブラウザを開いてコンソールで表示します。

2.ノードサーバー:

1. cmd ウィンドウで cd コマンドを使用して、開く必要があるフォルダーに切り替え、ノード ファイル名を実行します。

2. フォルダー直下で Shift + 右クリック

3. vscode エディターは現在のファイルのターミナルで直接開かれ、submint エディターはターミナル プラグインをインストールする必要があります

1.2 ブラウザでの JS の比較

1.2.1 ブラウザ上の JS

ここに画像の説明を挿入

Web API は、ブラウザのウィンドウやページを操作するための機能を提供します。例: BOM 操作、DOM 操作、AJAX

これらの機能には制限があります。例: クロスドメインの問題、ファイルの読み取りと書き込み

1.2.2 ノード内の JavaScript

ここに画像の説明を挿入

nodeAPI は実行できるほぼすべての機能を提供します

1.2.3 ノード内の JS とブラウザ内の JS

ここに画像の説明を挿入

① ブラウザが提供する機能は限られており、JSはブラウザが提供する機能を利用して限られた操作しか行えません

② Node はコンピュータを制御するための完全な機能を提供し、NodeJS は Node が提供するインターフェースを通じてオペレーティング システム全体をほぼ制御できます。

1.3 公式文書

Node公式サイト:https://nodejs.org/ja/

Node Chinese公式サイト(プライベートサイト):http://nodejs.cn

2. ノードでできることは何ですか?

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

例えばQQ、WeChat...よく使われるVScodeはnodeで開発されています

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

構造 1: 微細構造

ノードサーバーは、リクエストの処理、応答、データベースとの対話、およびさまざまなビジネスロジックを完了する必要があります

この構造は通常、マイクロサイトに適用されます。例:個人ブログ、会社公式サイト

構造 2: 大きな構造

この構造は非常に一般的で、あらゆる規模のサイトで使用されています

ノードサーバー

ビジネスロジックに関連することは何も行わないでください。ほとんどの場合、これは単にリクエストを転送するだけです。ただし、いくつかの追加機能がある可能性があります

1. 単純な情報記録: リクエストログ、ユーザー設定、広告情報

2. 静的リソースのホスティング

3. キャッシュ

バックエンドサーバー

大規模なビジネス ロジックを処理する

3. NodeJS を学ぶ理由?

1. JS開発により時間と労力を節約

2. NodeJS はシングルスレッドであるため、スレッド切り替えの損失やスレッド間の競合はありません。

3. IO処理が非常に速い

4. ノードは複雑な操作には適していません。たとえば、Java は並列操作のために複数のスレッドを開くことができます。

ノードは、他のサーバーサイド言語 (Java、.net など) で実行できるすべてのことを実行できます。言葉遣いは良い悪いではなく、その場に適しているだけです。

ノード開発者は高速 IO 処理言語を探しているため、JavaScript を選択します

4. グローバルオブジェクト

グローバル

ブラウザ環境でもこれと同じで、トップレベルのオブジェクトを表します

注: ブラウザのグローバル環境はウィンドウを意味し、ノード内のこれはグローバルを意味しません

// 全局对象
console.log(global)
console.log(this)//在node中的this不指向window,就是一个空对象

var a = 123;
console.log(global.a == a)//在node中变量声明不提升至global中
console.log(a)

1.setTimeout、setInterval

使い方はブラウザ環境と全く同じです。

注: ブラウザは ID を返し、オブジェクトはノード環境で返されます。

2.setImmediate

setTimeout 0に似ている

setInterval(()=>{
    console.log(123)
},1000)

setTimeout(() => {
    console.log("延时定时器")
},0);


setImmediate(()=>{
    console.log("qwe")
},0)

3.コンソール

ブラウザのコンソール出力

コマンドライン上のノード出力

4.__住所*

console.log(__dirname)

現在のモジュールが配置されているディレクトリを取得します

: グローバル属性ではありません

5.__ファイル名*


console.log(__filename)

現在のモジュールのファイルパスを取得します

: グローバル属性ではありません

6.バッファー

バッファは配列に似ており、データ送信形式です。16進数と文字列
の違い:
文字列は読み取り専用で、文字列を変更することで新しい文字列を取得でき、元の文字列は元のバッファに残ります
。メモリ v8 のヒープ メモリに割り当てはなく、ノード
の C++ レベルで別のメモリの適用が実現されます。

UInt8Arrayから継承

コンピュータ内のストレージの基本単位: バイト

使用時や出力時に16進数表現を使用する必要がある場合があります

7.プロセス

cwd()

現在のnodejsプロセスの作業ディレクトリ、実行中のcmdウィンドウのディレクトリを返します。

出口()*

現在のノードプロセスを強制終了します

終了コードを渡すことができます。0 は正常に終了したことを意味します。デフォルトは 0 で、主にログへの入力に使用されます。

引数*

コマンド内のすべてのパラメータを取得します

プラットホーム

現在のプラットフォーム システムを取得する

キル(pid)

プロセスIDに従ってプロセスを強制終了します

環境

環境変数オブジェクトを取得する

5. ノードのモジュール化

1. モジュール検索

1. 相対パス

2.1 追加/状況

サーバー側では、必ず ./ を追加してください。これは、現在のディレクトリから開始することを意味します。

2.2 ./case なし

① fs、pathなどの組み込みモジュールかどうかを確認します。

②カレントディレクトリのnode_modulesを確認する

③親ディレクトリのnode_modulesを確認する

3. サフィックス名

接尾辞が指定されていない場合は、オートコンプリートが行われます。

完了の順序は次のとおりです: js、json、node、mjs

4. ファイル名

ディレクトリのみが指定され、ファイル名が指定されていない場合は、このディレクトリ内のindex.jsが自動的に検索されます。

5. ノード ./ を実行します。

package.jsonのメインフィールド、デフォルト値はindex.jsです

2.モジュールオブジェクト

現在のモジュールの情報を記録します

3. 関数が必要

解決関数は絶対パスに結合されます

4. モジュール原理

モジュールを実行するか、require を使用すると、モジュールは関数環境に配置されます。

6. 基本的な内蔵モジュール

(数値ノードをダウンロードすると、モジュールが自動的にパッケージ化されます)

1.os

参考アドレス:https://nodejs.org/dist/latest-v12.x/​​docs/api/os.html

1.EOL

オペレーティングシステムのバージョン

2.arch()

オペレーティングシステムのCPUアーキテクチャ

3.cpus()

CPUコア情報

4.freemem()

コンピューターに残っているメモリの量 (バイトとして返されます)

5.homedir()

ユーザーディレクトリ

6.ホスト名()

ホスト名

7.tmpdir()

一時ファイルディレクトリを取得

2.パス

参考アドレス:https://nodejs.org/dist/latest-v12.x/​​docs/api/path.html

: パス モジュールの操作はすべて文字列操作と同等であり、パスが実際に存在するかどうかは判断されません。

1.basename

特定のパスの最後/後ろのコンテンツを取得する

2 番目のパラメータはオプションのパラメータです。一致する場合は、一致するコンテンツを削除します

9月2日

オペレーティングシステムの区切り文字

3.デリミタ

現在のオペレーティングシステムの区切り文字を出力します

4. 姓

パスのディレクトリを取得する

5.extname

パスのサフィックスを取得する

6.参加する

スプライシング パスはオペレーティング システムに従ってスプライスされます

7.正規化

オペレーティングシステムの仕様パスによる

8.相対的

相対パス形式に変更

9.解決*

絶対パスに変換し、cmd ウィンドウに従って結合します

: コマンドライン ツールと比較して、通常は __dirname とともに使用されます。

3.url

参考アドレス:https://nodejs.org/dist/latest-v12.x/​​docs/api/url.html

1.parse()*

文字列をオブジェクトに変換する

2.format()

文字列に変換されたオブジェクト

4.ユーティリティ

参考アドレス:https://nodejs.org/dist/latest-v12.x/​​docs/api/util.html

1.コールバックファイ

非同期関数をコールバック形式に変換する

2.約束する

コールバックフォームは非同期関数に変換されます

3.isDeepStrictEqual

2 つのオブジェクトの深さの比較

7.文件I/O

1. I/O:入力出力

外部デバイスへの入出力 (ディスク、ネットワーク カード、グラフィックス カード、プリンターなど)

IO の速度は、多くの場合、メモリと CPU の相互作用速度よりも遅くなります。

2.fsモジュール

参考アドレス:https://nodejs.org/dist/latest-v12.x/​​docs/api/fs.html

1.fs.readFile

ファイルを読み取る

2.fs.writeファイル

コンテンツをファイルに書き込む

ファイル名が存在しない場合は新しいファイルが作成され、ディレクトリが存在しない場合はエラーが報告されます。

3.fs.stat

ファイルまたはディレクトリの情報を取得する

1.サイズ

占有バイト数

2.atime

最終アクセス時間

3.分時

ファイルの内容が最後に変更された時刻

4.ctime

ファイルステータスが最後に変更された時間

5.生年月日

ファイル作成時間

6.isDirectory()

ディレクトリであるかどうかを判断する

7.isFile()

ファイルかどうかを判断する

4.fs.readdir

ディレクトリ内のファイルとサブディレクトリを取得する

5.fs.mkdir

ディレクトリの作成

6.fs.存在する

ファイルまたはディレクトリが存在するかどうかを確認する

8. フロントエンド面接の質問 (1)

1. setTimeout を使用して setInterval を実装します。

function mySetTimout(fn, delay) {
    let timer = null
    const interval = () => {
        fn()
        timer = setTimeout(interval, delay)
    }
    setTimeout(interval, delay)
  
}

// 测试
const { cancel } = mySetTimout(() => console.log(888), 1000)


2. setIntervalを使用してsetTimeoutを実装します。

function mySetInterval(fn, delay) {
            const timer = setInterval(() => {
                fn()
                // clearTimeout(timer)
                clearInterval(timer)
            }, delay)
        }

        // 测试
        mySetInterval(() => console.log(888), 1000)

おすすめ

転載: blog.csdn.net/qq_45256777/article/details/120960122