Nodeのグローバル変数とグローバルオブジェクト
6311 ワード
グローバルオブジェクトとグローバル変数
概念:すべての属性はプログラムのどこにでもアクセスできます.すなわちグローバル変数です.JavaScriptでは、通常windowはグローバルオブジェクトであり、Node.jsのグローバルオブジェクトはglobalであり、すべてのグローバル変数はglobalオブジェクトの属性である.globalの最も根本的な役割はグローバル変数の宿主として、条件を満たすことをグローバル変数1といいます.一番外側に定義された変数2.グローバルオブジェクトの属性3.暗黙的に定義された変数▲nodeでは、一番外側に変数を定義することができません.すべてのユーザーコードは現在のモジュールに属しています.モジュール自体は最外層コンテキストに属していません.
グローバルオブジェクトプロcess
現在のNode.jsプロセス状態を説明するためのオブジェクトは、オペレーティングシステムとの簡単なインターフェースを提供し、通常は process.stdinは標準入力ストリームであり、古いバージョンの標準ストリームでは、最初はデフォルトで停止されていました.標準入力ストリームからデータを読み出すには、 である. process.stderは標準エラーフローです.プロcess.stdoutと同じです.出力の色が違うだけです.下の図を見てください.これはwebstromの効果です.コマンドラインでは見られない です. process.cwd():現在のファイルの絶対パスを示し、これは process.on() process.on(「exit」、function(){}は、プログラムが終了するとトリガされることを示しています.
process.on(SIGINT)(SIGINT=>signal interrupted)プログラムを終了すると、この関数が起動されます.下記のコードを見てください.
もっと多くの内容は次の文章を見てください.
これはNodeのシリーズです.この欄で他の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.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');
});
__dirname
とは異なる__dirname
から出力されたもので、nodeによって実行されるjsファイルのある絶対パスです.下図を見れば分かります.process.on('exit',function(){
console.log("process will exit");
})
//output process will exit
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に関する記事を読むことができます.ずっと更新します.問題がありましたら、下の方にメモしてください.