Nodeのグローバル変数とグローバルオブジェクト


グローバルオブジェクトとグローバル変数
概念:すべての属性はプログラムのどこにでもアクセスできます.すなわちグローバル変数です.JavaScriptでは、通常windowはグローバルオブジェクトであり、Node.jsのグローバルオブジェクトはglobalであり、すべてのグローバル変数はglobalオブジェクトの属性である.globalの最も根本的な役割はグローバル変数の宿主として、条件を満たすことをグローバル変数1といいます.一番外側に定義された変数2.グローバルオブジェクトの属性3.暗黙的に定義された変数▲nodeでは、一番外側に変数を定義することができません.すべてのユーザーコードは現在のモジュールに属しています.モジュール自体は最外層コンテキストに属していません.
グローバルオブジェクトプロcess
現在のNode.jsプロセス状態を説明するためのオブジェクトは、オペレーティングシステムとの簡単なインターフェースを提供し、通常は のプログラムを書くときに使用されます.いくつかの一般的な方法を紹介します.1.process.argv:コマンドラインパラメータ配列は、コマンドラインで使用され、最初の要素はnode、2番目の要素はスクリプトファイル名を実行します.3番目の要素から各要素は1つの実行パラメータです.私達は1つのファイルを創立してprocess.jsと言って、中はこの関数の情報を印刷するコードを含むだけでいいです.
console.log(process.argv);
このファイルはコマンドラインで実行されます.上の図のように、この方法はすべてのパラメータが1つの配列2になりました.process.stdout(stdout=>standard output)標準出力ストリームです.私達が使っているconsolie.logの下の部分はこの実装を使って、下のコードがconsole.logを実現するコードです.
console.log=function(msg){
     
    process.stdout.write(msg);
}
console.log("shangyilong");
  • process.stdinは標準入力ストリームであり、古いバージョンの標準ストリームでは、最初はデフォルトで停止されていました.標準入力ストリームからデータを読み出すには、process.stdin.resume()を介してストリームを復元し、ストリームを作成するイベントに対応する関数が必要です.新しいバージョンでは、ストリーム動作を復元しない、つまり標準入力ストリームがデフォルトで始まります.もちろん、新版の標準的なフロー動作は、古いバージョンのフロー動作に対応するものであり、これは古いバージョンの標準的なフロー動作
  • である.
    //     
    process.stdin.resume();
    //        
    process.stdin.on('data',function(some){
         
        process.stdout.write(some.toString());
    });
    次の新しいバージョンの標準入力フロー動作
    //        ,  data    readable       ,               
    process.stdin.on('readable',function(){
         
        var data = process.stdin.read();
        if(data !== null){
            process.stdout.write(data);
        }
    });
    // process.stdin.on('readable')
    process.stdin.on('end',function(){
         
        process.stdout.write('is end');
    });
  • process.stderは標準エラーフローです.プロcess.stdoutと同じです.出力の色が違うだけです.下の図を見てください.これはwebstromの効果です.コマンドラインでは見られない
  • です.
  • process.cwd():現在のファイルの絶対パスを示し、これは__dirnameとは異なる__dirnameから出力されたもので、nodeによって実行されるjsファイルのある絶対パスです.下図を見れば分かります.
  • process.on()
  • process.on(「exit」、function(){}は、プログラムが終了するとトリガされることを示しています.
  • process.on('exit',function(){
         
        console.log("process will exit");
    })
    //output  process will exit
  • process.on(SIGINT)(SIGINT=>signal interrupted)プログラムを終了すると、この関数が起動されます.下記のコードを見てください.
    process.stdin.on('readable',function(){
         
        var data = process.stdin.read();
        if(data !== null){
            process.stdout.write(data);
        }
    });
    // process.stdin.on('readable')
    process.stdin.on('end',function(){
         
        process.stdout.write('is end');
    });
    
    process.on('exit',function(){
         
        console.log("process will exit");
    });
    process.on('SIGINT',()=>{
        console.log('program will exit');
        //      
        process.exit();
    });
    
    以下の図は終了後の結果図です.7.process.nextTick().これを理解するには、Nodeの メカニズムを知る必要があります.もし分からないなら、私のもう一つのブログを見てもいいです.Nodeさんが知っておくべきことは、この関数の機能はイベントの循環のためにタスクを設定します.Nodeさんは次のイベントのループ応答時にこのコールバック関数を呼び出します.この関数は、複雑なことを分割して、小さなプロセスをプログラミングすることもできます.コードの具体的な説明を見てみます.
    
    function doSomeThing(data){
         
        console.log(data);
    }
    
    console.time("one");
    function do1(arg,cb){
         
        doSomeThing(arg);
        doSomeThing(arg);
        doSomeThing(arg);
        doSomeThing(arg);
        doSomeThing(arg);
        doSomeThing(arg);
        cb();
    
    }
    console.timeEnd('one');
    
    console.time('two');
    function do2(arg,cb){
         
        doSomeThing(arg);
        doSomeThing(arg);
        doSomeThing(arg);
        doSomeThing(arg);
        doSomeThing(arg);
        doSomeThing(arg);
        process.nextTick(cb);
    }
    console.timeEnd('two');
    //output  : 1ms
    //output  : 0ms
    上の時間のテストによって効率が分かります.
    もっと多くの内容は次の文章を見てください.
    これはNodeのシリーズです.この欄で他のNodeに関する記事を読むことができます.ずっと更新します.問題がありましたら、下の方にメモしてください.