ノードの機能(2):ノード内蔵オブジェクト

6271 ワード

ノード埋め込みオブジェクト

  • global
  • グローバルオブジェクト(ブラウザウィンドウなど)
  • 大量属性
  • が存在する.
  • ファイル間で単純なデータを共有する場合は
  • を使用します.
  • コード
    (globalA.js)
  • module.exports = () => global.message;
    (globalB.js)
    const A = require('./globalA');
    global.message = '안녕하세요';
    console.log(A()); 
    (結果)
    $ node globalB
    안녕하세요 
  • グローバルオブジェクトのプロパティ値はファイル間でデータを共有できますが、悪用するとオブジェクトの値が見つかりにくくなり、メンテナンスが困難になります.
  • 、つまり、他のファイルの値を使用する場合は、モジュールを作成します.
  • console
  • グローバルオブジェクトセキュリティ(プロパティ)
  • デバッグ用
  • console
    console.time(ラベル):console.timeEnd(ラベル)に対応する時間、すなわち同一ラベルが同一時間とtimeEndとの間の時間を測定する.
    console.log(コンテンツ):コンソールに通常のログが表示されます.console.Error(エラー内容):コンソールにエラーを表示する
    console.table(タイ):オブジェクトのテキストをタイリングの要素に入れると、オブジェクトのプロパティが表形式で表示されます.
    console.dir(オブジェクト、オプション):コンソールにオブジェクトを表示します.オプションのタイプには、colors(trueに設定するとコンソールに色が追加されます)とdepth(オブジェクト内のオブジェクトが表示されるレベルを決定する)があります.
    console.trace(ラベル):トレース可能なエラーがどこで発生したか(ほとんどのエラーが発生した場合、場所が表示されますが、役に立つことはありません)
  • コード
  • const string = 'abc';
    const number = 1;
    const boolean = true;
    const obj = {
      outside: {
        inside: {
          key: 'value',
        },
      },
    };
    console.time('전체시간');
    console.log('평범한 로그입니다 쉼표로 구분해 여러 값을 찍을 수 있습니다');
    console.log(string, number, boolean);
    console.error('에러 메시지는 console.error에 담아주세요');
    console.table([{ name: '제로', birth: 1994 }, { name: 'hero', birth: 1988}]);
    console.dir(obj, { colors: false, depth: 2 });
    console.dir(obj, { colors: true, depth: 1 });
    console.time('시간측정');
    for (let i = 0; i < 100000; i++) {}
    console.timeEnd('시간측정');
    function b() {
      console.trace('에러 위치 추적');
    }
    function a() {
      b();
    }
    a();
    console.timeEnd('전체시간');
  • タイマー
  • 時間メソッド:コールバック関数の時間に基づいて実行
    settimeout(コールバック関数、ミリ秒)
    :指定したミリ秒後にコールバック関数を実行
    setInterval(コールバック関数、ミリ秒)
    :指定したミリ秒に対してコールバック関数を繰り返し実行
    setImmediate(コールバック関数)
    :コールバック関数
  • を直ちに実行
    キャンセルタイマー
  • :タイマー関数はすべてIDを返し、タイマーをキャンセルすることができます.
    义齿
    :settimeoutをキャンセル
    clearInterval(アイデンティティー)
    :setIntervalのキャンセル
    clearImmediate(アイデンティティー)
    :Immediate
  • の設定をキャンセル
  • コード
  • const timeout = setTimeout(() => {
      console.log('1.5초 후 실행');
    }, 1500);
    const interval = setInterval(() => {
      console.log('1초마다 실행');
    }, 1000);
    const timeout2 = setTimeout(() => {
      console.log('실행되지 않습니다');
    }, 3000);
    setTimeout(() => {
      clearTimeout(timeout2);
      clearInterval(interval);
    }, 2500);
    const immediate = setImmediate(() => {
      console.log('즉시 실행');
    });
    const immediate2 = setImmediate(() => {
      console.log('실행되지 않습니다');
    });
    clearImmediate(immediate2);
  • filename, dirname
  • ファイルにfilenameとdirnameを配置すると、実行時に現在のファイル名とファイルパスに置き換えられます.
  • パス区切り記号(,/)は、pathモジュールとともに
  • を使用する文字列を返す可能性があります.
  • コード
  • console.log(__filename);
    console.log(__dirname);
  • コンソール結果
  • $ node filename.js
    C:\Users\zerocho\filename.js
    C:\Users\zerocho 
  • module.exports vs exports
  • module.exportsとexportsの役割は同じで、同じオブジェクト(参照)
  • を参照します.
  • 段、module.exportsは任意の値を代入できますが、exportsはpropertyと値を持つオブジェクト
  • を代入する必要があります.
  • 同時停止
  • 注意事項:トップ顕微鏡のthisはglobal,moduleではありません.書き出しオブジェクトを指します.関数は、内部のthisがグローバルオブジェクトを指すことを宣言します.
  • require
  • 最初のモジュール:
    require.mainはmoduleと同じです(===)
    名前が知りたいならrequiremain.filenameを押せばいいです.
  • require.cache:
    各モジュールフラグメントの情報が含まれます.
    新しいrequireが欲しいなら、require.cacheを削除すればいいです.
  • サイクルを参照してください.
    次に参照するモジュールは空のオブジェクト
  • として表示される.
  • コード:循環参照コード
    (dep1.js)
  • const dep2 = require('./dep2');
    console.log('require dep2', dep2);
    module.exports = () => {
      console.log('dep2', dep2);
    };
    (dep2.js)
    const dep1 = require('./dep1');
    console.log('require dep1', dep1);
    module.exports = () => {
      console.log('dep1', dep1);
    };
    (コンソール結果)
    dep1 의 module.exports가 함수가 아니라 빈 객체로 표시됨
  • process
  • の使用頻度は高くありませんが、環境固有の他の操作を実行する場合に使用するProperty/メソッド
    process.バージョン:ノードがインストールされているバージョン
    process.Arch:プロセッサアーキテクチャ情報
    process.プラットフォーム:オペレーティングシステムプラットフォーム情報
    process.pid:現在のプロセスのid
    process.通常稼働時間():プロセス開始後の期間(単位:秒)
    process.execPath:ノードのパス
    process.cwd():現在のプロセスが実行されている場所
    process.cpu使用():現在のcpu使用量
  • process.env:
    システムの環境変数.ノードに直接影響します.
  • NODE OPTIONS:ノード実行時にオプションを入力する環境変数
    コード:ノードに最大8 GBのメモリ値
  • を提供する
    NODE_OPTIONS =--max-old-space-size=8192 
  • UV THREADOL SIZE:制御ノードでデフォルトで使用されるスレッドプールのスレッド数
    コード:8スレッドプール
  • UV_THREADPOOL_SIZE=8
  • サーバまたはデータベースのパスワードおよび様々なAPIキーを格納
    コード:重要なパスワードを処理します.
  • をenvのプロパティで置き換える
    const secretId = process.env.SECRET_ID;
    const secretCode = process.env.SECRET_CODE;
    process.nextTick(コールバック)
  • イベントループはnextTickコールバック関数を他のコールバック関数
  • よりも優先する.
  • コード:誰が先に実行しますか?
  • setImmediate(() => {
      console.log('immediate');
    });
    process.nextTick(() => {
      console.log('nextTick');
    });
    setTimeout(() => {
      console.log('timeout');
    }, 0);
    Promise.resolve().then(() => console.log('promise'));
  • コンソール結果
  • $ node nextTick
    nextTick
    promise
    timeout
    immediate
    process.义齿
  • の実行を終了するノードプロセス
  • サーバ停止
  • 買収
  • により、コード番号を
  • に拡大
  • 0 0を受け入れない、または拡大・縮小0:正常終了
  • 1を
  • 因数にスケールします:
  • 異常終了/エラーで終了しても
  • コード:setIntervalに繰り返されるコードを処理します.停止はexit()
  • setInterval(() => {
      if (i === 5) {
        console.log('종료!');
        process.exit();
      }
      console.log(i);
      i += 1;
    }, 1000);
  • コンソール結果
  • $ node exit
    1
    2
    3
    4
    종료!