Latest web development tutorials

グローバルオブジェクトのNode.js

JavaScriptはグローバルオブジェクト(グローバルオブジェクト)と呼ばれる特殊なオブジェクトを、持っている、それをそのすべての属性は、プログラム、グローバル変数内の任意の場所にアクセスすることができます。

ブラウザのJavaScriptは、通常、グローバルウィンドウオブジェクト、Node.jsのがグローバルであるグローバルオブジェクトである、(グローバル自体を除く)すべてのグローバル変数はグローバルオブジェクトのプロパティです。

Node.jsの中で私たちを必要とせず、グローバルプロパティに直接アクセスは、アプリケーションでそれを含めることができます。


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

グローバル変数ホストとして最も基本的なグローバルロール。 定義のECMAScriptによって、以下の条件がグローバル変数です満たしています。

  • 最も外側の変数定義されています。
  • グローバルオブジェクトのプロパティ;
  • 変数暗黙的に定義された(直接割り当て未定義の変数)。

あなたは、グローバル変数を定義する場合、変数はグローバルオブジェクトのプロパティ、およびその逆になります。 すべてのユーザーコードは現在のモジュールの一部であり、モジュール自体は、最も外側のコンテキストではないので、Node.jsの中であなたが一番外側の変数を定義することはできません、ということに注意してください。

注:常にグローバル変数の導入を避けるために、変数を定義するVARを使用して、グローバル変数は、名前空間を汚染し、カップリングコードのリスクが増加しますので。


__filename

__filenameは、現在実行されているスクリプトのファイル名を示しています。それは、出力ファイルになります場所、およびコマンドラインパラメータへの絶対パスとファイル名を指定して、必ずしも同じではありません。 モジュール内の場合、戻り値はモジュールファイルへのパスです。

次のように、コードをファイルmain.jsファイルを作成します。

// 输出全局变量 __filename 的值
console.log( __filename );

次のようにエグゼクティブmain.jsファイルのファイル、コードは次のとおりです。

$ node main.js
/web/com/w3big/nodejs/main.js

__dirname

__dirnameは、現在実行中のスクリプトディレクトリが配置されている表します。

次のように、コードをファイルmain.jsファイルを作成します。

// 输出全局变量 __dirname 的值
console.log( __dirname );

次のようにエグゼクティブmain.jsファイルのファイル、コードは次のとおりです。

$ node main.js
/web/com/w3big/nodejs

setTimeout(CB、ミリ秒)

setTimeout(CB、ミリ秒)グローバル関数は、指定されたミリ秒数(ミリ秒)数(CB)の後に特定の機能を実行します。:()とsetTimeout関数は一度だけ指定されています。

これは、ハンドル値は、タイマーを表して返します。

次のように、コードをファイルmain.jsファイルを作成します。

function printHello(){
   console.log( "Hello, World!");
}
// 两秒后执行以上函数
setTimeout(printHello, 2000);

次のようにエグゼクティブmain.jsファイルのファイル、コードは次のとおりです。

$ node main.js
Hello, World!

clearTimeout(T)

clearTimeout(t)は 、タイマーを作成するためのsetTimeout()を渡す前にグローバル機能を停止するために使用されます。電卓を作成するためのsetTimeout()関数でパラメータt。

次のように、コードをファイルmain.jsファイルを作成します。

function printHello(){
   console.log( "Hello, World!");
}
// 两秒后执行以上函数
var t = setTimeout(printHello, 2000);

// 清除定时器
clearTimeout(t);

次のようにエグゼクティブmain.jsファイルのファイル、コードは次のとおりです。

$ node main.js

setInterval(CB、ミリ秒)

setInterval(CB、ミリ秒)グローバル関数は、指定されたミリ秒数(ミリ秒)数(CB)の後に特定の機能を実行します。

これは、ハンドル値は、タイマーを表して返します。 あなたはタイマーをクリアするてclearInterval(t)の関数を使用することができます。

setInterval()メソッドは、()てclearIntervalまで関数を呼び出すしていきますと呼ばれているか、ウィンドウが閉じられています。

次のように、コードをファイルmain.jsファイルを作成します。

function printHello(){
   console.log( "Hello, World!");
}
// 两秒后执行以上函数
setInterval(printHello, 2000);

次のようにエグゼクティブmain.jsファイルのファイル、コードは次のとおりです。

$ node main.js
こんにちは、世界!こんにちは、世界!こんにちは、世界!こんにちは、世界!こんにちは、世界!......

上記のプログラムは、出力2秒に1回「ハロー、ワールド!」でしょう、そして、あなたは、Ctrl + Cボタンを押すまで実行を継続する恒久的になります。


コンソール

後で事実上の標準ブラウザとなって、Internet ExplorerのJScriptエンジンが提供するデバッグツールで標準出力を提供するためのコンソールコンソール。

Node.jsの動作の一貫性と標準出力ストリーム(stdout)または標準エラーストリーム(stderr)出力文字に使用されるコンソールオブジェクトの習慣を提供し、この標準に準拠しています。

コンソール法

次は、コンソールオブジェクトです:

いいえ。 メソッドと説明
1 console.log([データ] [、... ])
改行を標準出力ストリームの印刷文字と最後に。 一つのパラメータのみ、このパラメータの出力文字列が存在する場合、このメソッドは、いくつかのパラメータを取ります。 複数の引数、C言語のprintf()コマンドの出力形式のような場所がある場合。
2 console.info([データ] [、... ])
Pは、コマンドはconsole.logに違いは出力のみ、テキスト、残りは青の感嘆符が表示されますクロムに加えて、大規模ではありませんが、コマンドの役割は情報メッセージを返すです。
3 console.error([データ] [、... ])
エラーメッセージを出力。 エラーがフォークを発生したときにコンソールが赤く表示されます。
4 console.warn([データ] [、... ])
警告メッセージが出力されます。 コンソールは、黄色の感嘆符が表示されます。
5 console.dir(OBJ [、オプション])
チェック(検査)するために使用されるオブジェクト、および読みやすい表示と印刷フォーマット。
6 console.time(ラベル)
時間の出力、開始時間。
7 console.timeEnd(ラベル)
タイミングの終了を示す、時間を終了します。
8 console.trace(メッセージ[、...])
コードは現在、このテスト機能が便利です実行し、スタック内の呼び出しパスを実行している、ちょうどライン上console.traceに参加したの機能をテストしたいです。
9 console.assert(値[、メッセージ] [ 、...])
変数または式が真であるかどうかを決定するために、それは2つのパラメータを取り、最初のパラメータは式であり、第二引数は文字列です。 最初の引数がfalseの場合にのみ、出力はそれが任意の結果を持っていないだろう、第二引数になります。
console.log():標準出力ストリームに出力し、改行文字で終わります。

一つのパラメータのみ、このパラメータの出力文字列がある場合にconsole.logは、いくつかのパラメータを受け取ります。 複数の引数、C言語のprintf()コマンドの出力形式のような場所がある場合。

最初のパラメータは、パラメータを指定せずに、文字列であり、唯一の改行を出力します。

console.log('Hello world'); 
console.log('byvoid%diovyb'); 
console.log('byvoid%diovyb', 1991); 

業績は以下のとおりです。

Hello world 
byvoid%diovyb 
byvoid1991iovyb 
  • console.error():はconsole.log()とは同じで使っていますが、標準エラーストリームに出力します。
  • console.trace():標準出力にエラーストリーム現在のコールスタック。
console.trace();

業績は以下のとおりです。

Trace: 
at Object.<anonymous> (/home/byvoid/consoletrace.js:1:71) 
at Module._compile (module.js:441:26) 
at Object..js (module.js:459:10) 
at Module.load (module.js:348:31) 
at Function._load (module.js:308:12) 
at Array.0 (module.js:479:10) 
at EventEmitter._tickCallback (node.js:192:40)

次のように、コードをファイルmain.jsファイルを作成します。

console.info("程序开始执行:");

var counter = 10;
console.log("计数: %d", counter);

console.time("获取数据");
//
// 执行一些代码
// 
console.timeEnd('获取数据');

console.info("程序执行完毕。")

次のようにエグゼクティブmain.jsファイルのファイル、コードは次のとおりです。

$ node main.js
程序开始执行:
计数: 10
获取数据: 0ms
程序执行完毕

プロセス

プロセスはグローバルオブジェクトの属性グローバル変数です。

これは、オブジェクトのNode.jsプロセスの現在の状態を記述するために使用され、それは、オペレーティングシステムへの簡単なインターフェースを提供します。 通常は、ネイティブコマンドラインプログラムを書き、最終的には、それに対処します。 以下は、メンバーがオブジェクトのプロセスの最も一般的に使用される方法のいくつかをご紹介します。

いいえ。 イベント&説明
1 出口
火災プロセスが終了する準備ができています。
2 beforeExit
このイベントはトリガされたときにノードの空のイベントループ、およびno他の構成。 そこに出口ノードを配置するどのプロセスがありませんが、ときに、一般的に、「beforeExit」リスナーが非同期的に呼び出すことができるので、そのノードが継続されます。
3 uncaughtException
例外は戻ってイベントループにバブリングすると、このイベントをトリガします。 あなたは例外にモニタを追加する場合、デフォルトのアクションは、(スタックトレースを出力し、終了します)発生しません。
4 イベント <BR>プロセスが信号を受信するときに、 信号がトリガされます。このようなようにSIGINT、SIGUSR1およびなどの信号POSIX標準シグナル名のリストを参照してください。

次のように、コードをファイルmain.jsファイルを作成します。

process.on('exit', function(code) {

  // 以下代码永远不会执行
  setTimeout(function() {
    console.log("该代码不会执行");
  }, 0);
  
  console.log('退出码为:', code);
});
console.log("程序执行结束");

次のようにエグゼクティブmain.jsファイルのファイル、コードは次のとおりです。

$ node main.js
程序执行结束
退出码为: 0

終了ステータスコード

終了ステータスコードは以下のとおりです。

状態コード タイトルと説明
1 捕捉されない致命的な例外
そこキャッチされない例外、およびそれが処理またはドメインuncaughtExceptionハンドラーされていません。
2 未使用
リテンション
3 内部JavaScriptの解析エラー
解析エラーJavaScriptのソースコードノードのプロセスを開始するときに生じます。 ごくまれに、ときにのみ、ノードの開発ではありません。
4 内部JavaScriptの評価の失敗
JavaScriptのソースノードの起動プロセスは、関数を評価するときの失敗を返します。 ごくまれに、ときにのみ、ノードの開発ではありません。
5 致命的なエラー
回復不能なエラーでV8致命的。 FATAL ERROR:通常標準エラー出力、コンテンツへの印刷
6 非機能内部例外ハンドラ
キャッチされない例外、例外ハンドラは、内部何とかオン機能セット、および呼び出すことはできません。
7 内部例外ハンドラ実行時の障害
キャッチされない例外、および自分自身を処理する例外ハンドラは、例外をスローします。 例えば、process.on( 'uncaughtException')またはdomain.on( 'エラー')は例外をスローした場合。
8 未使用
リテンション
9 無効な引数
それは無価値へのパラメータまたはパラメータには未知であってもよいです。
10 内部JavaScriptのランタイムエラー
非常にまれなノードのプロセスエラーを、起動時にJavaScriptのソースコードは、ノードの開発にがある場合にのみ、スローされます。
12 無効なデバッグ引数
パラメータセットおよび/または--debug-BRK --debugが、間違ったポートを選択しました。
> 128 信号終了
ノードは、SIGKILLやSIGHUPのような致命的なシグナルを受信した場合、終了コードは128プラス信号コードです。 これは、標準的なUnixの練習、終了信号に高いコードです。

プロセス属性

このプロセスは、多くの有用な特性、我々はより良​​いシステムを制御することができます相互作用の容易さを提供します。

ナンバー。 プロパティ&説明
1 標準出力
標準出力ストリーム。
2 標準エラー出力
標準エラーストリーム。
3 標準入力
標準入力ストリーム。
4 ARGV
ARGVプロパティは、コマンドラインスクリプトの実行組成に対する様々なパラメータの配列を返します。 その最初のメンバーは常にノードであり、第2の部材がスクリプトファイル名であり、残りのメンバーは、スクリプトファイルのパラメータです。
5 execPath
現在のスクリプト実行ノードのバイナリの絶対パスを返します。
6 execArgv
メンバーは、コマンドラインスクリプトの下にあるアレイは、ノードの実行スクリプトファイルのコマンドラインパラメータとの間で実行されて返します。
7 ENV
、オブジェクトを返し、現在のシェル環境変数のメンバー
8 終了コード
プロセスの終了コード、もし終了コードを指定せずに、process.exit()出口から才能のプロセス。
9 バージョン
ノード・バージョンは、このようなv0.10.18。
10 バージョン
ノードのバージョンと依存関係を含むプロパティ。
11 設定
現在のノードを含むオブジェクトは、JavaScriptの設定オプションの実行可能ファイルをコンパイルするために使用されます。 これは、同じ実行に./configureスクリプトが「config.gypi」ファイルを生成しています。
12 PID
現在のプロセス番号。
13 タイトル
プロセス名は、デフォルトでは、値をカスタマイズすることができ、「ノード」です。
14 アーチ
現在のCPUアーキテクチャ:「腕」、「IA32」または「x64の」。
15 プラットフォーム
プログラムプラットフォームは「ダーウィン」、「FreeBSDの '、' Linuxの '、' SunOSの 'または' win32の 'を実行します。
16 mainModule
別の方法をrequire.main。 メインモジュールは、実行時に変更された場合に異なる点は、require.mainは、古いモジュールに戻るし続けることができます。 両方が同一のモジュールを参照すると考えられています。

次のように、コードをファイルmain.jsファイルを作成します。

// 输出到终端
process.stdout.write("Hello World!" + "\n");

// 通过参数读取
process.argv.forEach(function(val, index, array) {
   console.log(index + ': ' + val);
});

// 获取执行路局
console.log(process.execPath);


// 平台信息
console.log(process.platform);

次のようにエグゼクティブmain.jsファイルのファイル、コードは次のとおりです。

$ node main.js
Hello World!
0: node
1: /web/www/node/main.js
/usr/local/node/0.10.36/bin/node
darwin

メソッドリファレンス・マニュアル

プロセスは、私たちのインタラクティブシステムのよりよい制御を容易にするために有用な方法の多くを提供します。

いいえ。 メソッドと説明
1 中止()
これは、ノードアボートトリガ・イベントが発生します。 これは、ノードを終了し、コアファイルが生成されます。
2 chdir(ディレクトリ)
操作がスロー失敗した場合、プロセスの現在の作業ディレクトリを変更します。
3 CWD()
現在のプロセスの作業ディレクトリを返します。
4 終了([コード])
指定されたコードを持つプロセスの終了。 省略した場合、それはコード0を使用します。
5 GETGID()
プロセス・グループIDを取得します(GETGID(2)参照)。 グループは、デジタルIDを取得したときに、名前を付けていません。
注:この関数は、POSIXプラットフォーム(例えば、Windows以外とAndroid)を用いることができます。
6 setgidの(ID)
グループ識別設定処理(setgidの(2)参照)。 あなたは、デジタルIDまたはグループ名を受け取ることができます。 あなたがグループ名を指定した場合は、デジタルIDを待ってブロックするように解決されます。
注:この関数は、POSIXプラットフォーム(例えば、Windows以外とAndroid)を用いることができます。
7 GETUID()
(GETUID(2)を参照)、ユーザ識別プロセスを取得します。 これは、ユーザIDの数値ではなく、ユーザー名です。
注:この関数は、POSIXプラットフォーム(例えば、Windows以外とAndroid)を用いることができます。
8 setuid(ID)
ユーザID設定処理(のsetuid(2)参照)。 デジタルIDまたは文字列名を受け取ります。 あなたがグループ名を指定した場合は、デジタルIDを待ってブロックするように解決されます。
注:この関数は、POSIXプラットフォーム(例えば、Windows以外とAndroid)を用いることができます。
9 getgroups()
プロセス・グループIDの配列を返します。 POSIXシステムが存在することを保証するものではありませんが、Node.jsの存在が保証されています。
注:この関数は、POSIXプラットフォーム(例えば、Windows以外とAndroid)を用いることができます。
10 setgroupsを(グループ)
集合プロセスグループID。 あなたがroot権限を持っている必要があり、またはCAP_SETGID能力を持っているすべてを操作することを許可されています。
注:この関数は、POSIXプラットフォーム(例えば、Windows以外とAndroid)を用いることができます。
11 initgroups(ユーザ、extra_group)
/ etc / groupのを読み、グループアクセスリストを初期化し、すべてのグループメンバーが配置されています。 あなたがroot権限を持っている必要があり、またはCAP_SETGID能力を持っているすべてを操作することを許可されています。
注:この関数は、POSIXプラットフォーム(例えば、Windows以外とAndroid)を用いることができます。
12 殺す(PID [、信号])
プロセスにシグナルを送信します。pidはプロセスIDであり、信号が伝送される信号を説明する文字列です。 信号名は 'SIGINT'または 'SIGHUP'のような文字列です。 省略した場合、信号は「SIGTERM」になります。
13 MemoryUsageの()
これは、ノードのメモリステータスバイトが使用するプロセスを記述するオブジェクトを返します。
14 nextTick(コールバック)
現在のイベントループの最後たら、関数をコールバック。
15 umaskの([マスク])
プロセスファイルマスクを設定またはリード。 子プロセスは親プロセスからマスクを継承します。 マスク引数が有効である場合、それは、古いマスクを返します。 それ以外の場合は、現在のマスクを返します。
16 稼働時間()
秒のノードの数がすでに実行されて返します。
17 hrtime()
フォーム[秒、ナノ秒]配列内の現在のプロセスの時間分解能、。 これは、任意の過去の事象に関するものです。 この値は、日付とは何の関係もないので、クロックドリフトに影響を与えません。 主な目的は、プログラムの性能を測定するために、正確な時間間隔を介しています。
あなたが現在process.hrtimeに結果を渡すことができます前に()、それが基準と測定時間間隔のために、2間の時間差に戻ります。

次のように、コードをファイルmain.jsファイルを作成します。

// 输出当前目录
console.log('当前目录: ' + process.cwd());

// 输出当前版本
console.log('当前版本: ' + process.version);

// 输出内存使用情况
console.log(process.memoryUsage());

次のようにエグゼクティブmain.jsファイルのファイル、コードは次のとおりです。

$ node main.js
当前目录: /web/com/w3big/nodejs
当前版本: v0.10.36
{ rss: 12541952, heapTotal: 4083456, heapUsed: 2157056 }