Node.js モジュール ライブラリには、便利なモジュールが多数あります。 次に、一般的に使用されるいくつかのモジュールの使用法を紹介します。
| 番号 | モジュール名と説明 |
|---|---|
| 1 | OS モジュール は、基本的なシステム オペレーティング機能を提供します。 |
| 2 | パス モジュール は、ファイル パスを操作および変換するためのツールを提供します。 |
| 3 | ネット モジュール 低レベルのネットワーク通信に使用されます。 サーバーとクライアントの操作を提供します。 |
| 4 | DNS モジュール はドメイン名の解決に使用されます。 |
| 5 | ドメイン モジュール 非同期コードの例外処理を簡素化し、try catch でキャッチできないものをキャッチして処理できるようにします。 |
Node.js os モジュールは、いくつかの基本的なシステム操作機能を提供します。 このモジュールは次の方法でインポートできます。
var os = require("os")
| 番号 | メソッドと説明 |
|---|---|
| 1 | os.tmpdir() オペレーティング システムのデフォルトの一時ディレクトリを返します。 |
| 2 | os.endianness() CPU のエンディアンネス (おそらく "BE" または "LE") を返します。 |
| 3 | os.hostname() オペレーティング システムのホスト名を返します。 |
| 4 | os.type() オペレーティング システム名を返します |
| 5 | os.platform() コンパイル時にオペレーティング システム名を返します |
| 6 | os.arch() OS CPU アーキテクチャを返します。可能な値は「x64」、「arm」、「ia32」です。 「。」 |
| 7 | os.release() オペレーティング システムのリリース バージョンを返します。 |
| 8 | os.uptime() オペレーティング システムの稼働時間を秒単位で返します。 |
| 9 | os.loadavg() 1、5、15 分の負荷平均を含む配列を返します。 |
| 10 | os.totalmem() システム メモリの合計量をバイト単位で返します。 |
| 11 | os.freemem() オペレーティング システムの空きメモリ量をバイト単位で返します。 |
| 12 | os.cpus() インストールされている各 CPU/コアに関する情報を含むオブジェクトの配列を返します: モデル、速度 (MHz) 、time (ユーザー、nice、sys、idle、irq によって使用される CPU/コアのミリ秒を含むオブジェクト)。 |
| 13 | os.networkInterfaces() ネットワーク インターフェイスのリストを取得します。 |
| 番号 | 属性と説明 |
|---|---|
| 1 | os.EOL オペレーティング システムの行末文字の定数を定義します。 |
main.js ファイルを作成します。コードは次のとおりです。
var os = require("os");
// CPU バイトオーダー
console.log('endianness : ' + os.endianness());
// オペレーティング システム名
console.log('type : ' + os.type());
// オペレーティング システム名
console.log('platform : ' + os.platform());
// 総システムメモリ
console.log('total memory : ' + os.totalmem() + " bytes.");
// オペレーティング システムの空きメモリの量
console.log('free memory : ' + os.freemem() + " bytes.");
コードの実行結果は次のとおりです。
$ node main.js endianness : LE type : Linux platform : linux total memory : 25103400960 bytes. free memory : 20676710400 bytes.
Node.js パス モジュールには、ファイル パスを処理するための小さなツールがいくつか用意されています。このモジュールは次の方法でインポートできます:
var path = require("path")
| 番号 | メソッドと説明 |
|---|---|
| 1 | path.normalize(p) パスを正規化します。「..」と「.」に注意してください。 |
| 2 | path.join([path1][, path2][, ...]) はパスを結合するために使用されます。 このメソッドの主な目的は、現在のシステムのパス区切り文字 (Unix システムは「/」、Windows システムは「\」) が正しく使用されるようにすることです。 |
| 3 | path.resolve([from ...], to) to 引数を絶対値として解決します「パス」では、指定されたパスのシーケンスが右から左に処理され、絶対パスが構築されるまで後続の各パスが順番に解析されます。 たとえば、パス フラグメントのシーケンス /foo、/bar、baz がある場合、path.resolve('/foo', '/bar', 'baz') を呼び出すと /bar/baz が返されます。
path.resolve('/foo/bar', './baz');
// 戻り値: '/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file/');
// 戻り値: '/tmp/file'
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// 現在の作業ディレクトリが /home/myself/node の場合、
// その後、「/home/myself/node/wwwroot/static_files/gif/image.gif」を返します
|
| 4 | path.isAbsolute(path) パラメータ path が絶対パスかどうかを判断します。 |
| 5 | path.relative(from, to)
は、絶対パスを相対パスに変換するために使用され、(現在の作業ディレクトリに基づいて) から までの相対パスを返します。 Linux 上で:
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// 戻る: '../../impl/bbb'
在 Windows 上:
path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb');
// 戻る: '..\\..\\impl\\bbb' |
| 6 | path.dirname(p) Unix の dirname コマンドと同様に、フォルダーを表すパスの一部を返します。 |
| 7 | path.basename(p[, ext]) パスの最後の部分を返します。 Unix コマンドの bashname に似ています。 |
| 8 | path.extname(p) パス内のファイルのサフィックス名、つまり最後の ' の後の部分を返します。 .' パスにあります。 パスに「.」が含まれていない場合、またはパスに「.」が 1 つだけ含まれており、この「.」がパスの最初の文字である場合、このコマンドは空の文字列を返します。 |
| 9 | path.parse(pathString) パス文字列のオブジェクトを返します。 |
| 10 | path.format(pathObject) path.parse の逆で、オブジェクトからパス文字列を返します。 |
| 番号 | 属性と説明 |
|---|---|
| 1 | path.sep プラットフォームのファイル パス区切り文字、「\\」または「/」。 |
| 2 | path.delimiter プラットフォーム区切り文字、; または ':'。 |
| 3 | path.posix 上記の path のメソッドを提供しますが、常に posix と互換性のある方法で対話します。 |
| 4 | path.win32 上記の path のメソッドを提供しますが、常に win32 と互換性のある方法で対話します。 |
main.js ファイルを作成します。コードは次のとおりです。
var path = require("path");
// フォーマットパス
console.log('normalization : ' + path.normalize('/test/test1//2slashes/1slash/tab/..'));
// 接続パス
console.log('joint path : ' + path.join('/test', 'test1', '2slashes/1slash', 'tab', '..'));
// 絶対パスに変換
console.log('resolve : ' + path.resolve('main.js'));
// パス内のファイルの拡張子
console.log('ext name : ' + path.extname('main.js'));
コードの実行結果は次のとおりです。
$ node main.js normalization : /test/test1/2slashes/1slash joint path : /test/test1/2slashes/1slash resolve : /web/com/1427176256_27423/main.js ext name : .js
Node.js Net モジュールは、サーバー/クライアントの作成方法など、基盤となるネットワーク通信用の小さなツールをいくつか提供します。このモジュールは次の方法でインポートできます。
var net = require("net")
| 番号 | メソッドと説明 |
|---|---|
| 1 | net.createServer([options][, connectionListener]) TCP サーバーを作成します。 パラメータ connectionListener は、「connection」イベントのリスナーを自動的に作成します。 |
| 2 | net.connect(options[, connectionListener]) 新しい 'net.Socket' を返し、指定されたアドレスとポートに接続します。 ソケットが確立されると、「connect」イベントが発生します。 |
| 3 | net.createConnection(options[, connectionListener]) ポート port とホスト host への TCP 接続を作成します。 ホストのデフォルトは「localhost」です。 |
| 4 | net.connect(port[, host][, connectListener]) ポートをポート、ホストをホストとして TCP 接続を作成します。 。 ホストのデフォルトは「localhost」です。 パラメーター connectListener は、「connect」イベントのリスナーとして追加されます。 「net.Socket」を返します。 |
| 5 | net.createConnection(port[, host][, connectListener]) ポートをポート、ホストをホストとして TCP 接続を作成します。 。 ホストのデフォルトは「localhost」です。 パラメーター connectListener は、「connect」イベントのリスナーとして追加されます。 「net.Socket」を返します。 |
| 6 | net.connect(path[, connectListener]) パスに接続された UNIX ソケットを作成します。 パラメーター connectListener は、「connect」イベントのリスナーとして追加されます。 「net.Socket」を返します。 |
| 7 | net.createConnection(path[, connectListener]) パスに接続された UNIX ソケットを作成します。 パラメーター connectListener は、「connect」イベントのリスナーとして追加されます。 「net.Socket」を返します。 |
| 8 | net.isIP(input) 入力が IP アドレスであるかどうかを確認します。 IPV4 の場合は 4、IPV6 の場合は 6、その他の場合は 0 を返します。 |
| 9 | net.isIPv4(input) 入力アドレスが IPV4 の場合は true を返し、それ以外の場合は false を返します。 |
| 10 | net.isIPv6(input) 入力アドレスが IPV6 の場合は true を返し、それ以外の場合は false を返します。 |
net.Server は通常、TCP サーバーまたはローカル サーバーを作成するために使用されます。
| 番号 | メソッドと説明 |
|---|---|
| 1 | server.listen(port[, host][, backlog][, callback]) 指定されたポート port とホストをリッスンしますホストAC接続。 デフォルトでは、ホストは任意の IPv4 アドレス (INADDR_ANY) からの直接接続を受け入れます。 ポート port が 0 の場合、ランダムなポートが割り当てられます。 |
| 2 | server.listen(path[, callback]) 指定されたパスに接続してローカル ソケット サーバーを起動します。 |
| 3 | server.listen(handle[, callback]) ハンドルを指定して接続します。 |
| 4 | server.listen(options[, callback]) オプション属性: port port、host host、backlog、およびオプションのパラメータコールバック関数を組み合わせて、server.listen(port, [host], [backlog], [callback]) を呼び出します。 また、パラメータ パスを使用して UNIX ソケットを指定することもできます。 |
| 5 | server.close([callback]) サーバーは新しい接続の受け入れを停止し、既存の接続を維持します。 これは非同期関数であり、すべての接続が終了するとサーバーが閉じられ、「close」イベントが発生します。 |
| 6 | server.address() オペレーティング システムは、バインドされたアドレス、プロトコル ファミリ名、およびサーバー ポートを返します。 |
| 7 | server.unref() これがイベント システム内の唯一のアクティブなサーバーの場合、unref を呼び出すとプログラムを終了できます。 |
| 8 | server.ref() unref の逆で、これが唯一のサーバーの場合、以前に参照されていないサーバーで ref を呼び出します。プログラムを終了させます (デフォルトの動作)。 サーバーがすでに参照されている場合、ref を再度呼び出しても効果はありません。 |
| 9 | server.getConnections(callback) サーバー上の現在アクティブな接続の数を非同期的に取得します。 これはソケットが子プロセスに送信された後にのみ有効であり、コールバック関数には 2 つのパラメーター err と count があります。 |
| 番号 | イベントと説明 |
|---|---|
| 1 | listening サーバーがserver.listen バインディングを呼び出すとトリガーされます。 |
| 2 | 接続 新しい接続が作成されるとトリガーされます。 ソケットは net.Socket インスタンスです。 |
| 3 | close サーバーが閉じられると発生します。 接続がある場合、すべての接続が閉じられるまでこのイベントは発生しないことに注意してください。 |
| 4 | エラー エラーが発生するとトリガーされます。 「close」イベントは、次のイベントによって直接呼び出されます。 |
net.Socket オブジェクトは、TCP または UNIX ソケットを抽象化したものです。 net.Socket インスタンスは二重ストリーム インターフェイスを実装します。 これらは、ユーザーがクライアントを作成するときに (connect() を使用して) 使用することも、Node によって作成して接続サーバー イベントを介してユーザーに渡すこともできます。
net.Socket イベントは次のとおりです:
| 番号 | イベントと説明 |
|---|---|
| 1 | ルックアップ このイベントは、ドメイン名が解決された後、接続が確立される前に発生します。 UNIX ソケットには適用されません。 |
| 2 | connect ソケット接続が正常に確立されるとトリガーされます。 |
| 3 | data データを受信するとトリガーされます。 |
| 4 | end このイベントは、ソケットの他端が FIN パケットを送信するとトリガーされます。 |
| 5 | タイムアウト ソケット アイドル タイムアウト時にトリガーされ、ソケットがアイドル状態であることを意味します。 ユーザーは手動で接続を閉じる必要があります。 |
| 6 | ドレイン 書き込みキャッシュが空のときにトリガーされます。 アップロードの制御に使用できます。 |
| 7 | error エラーが発生した場合に発行されます。 |
| 8 | close ソケットが完全に閉じられたときに発生します。 パラメータ had_error はブール値で、送信エラーが原因でソケットが閉じられたかどうかを示します。 |
net.Socket は、ソケットの対話を制御するための便利なプロパティを多数提供します。
| 番号 | 属性と説明 |
|---|---|
| 1 | socket.bufferSize このプロパティは、バッファに書き込むバイト数を示します。 |
| 2 | socket.remoteAddress リモート IP アドレス文字列 (例: '74.125.127.100' または '2001:4860:a005::) 68分。 |
| 3 | socket.remoteFamily 「IPv4」や「IPv6」などのリモート IP プロトコル ファミリ文字列。 |
| 4 | socket.remotePort リモート ポート。80 や 21 などの数字で表されます。 |
| 5 | socket.localAddress ネットワーク接続にバインドされたローカル インターフェイス リモート クライアントが接続しているローカル IP アドレス。弦。 たとえば、「0.0.0.0」でリッスンし、クライアントが「192.168.1.1」で接続する場合、この値は「192.168.1.1」になります。 |
| 6 | socket.localPort 数値で表されるローカル ポート アドレス。 例: 80 または 21。 |
| 7 | socket.bytesRead 受信したバイト数。 |
| 8 | socket.bytesWritten 送信されたバイト数。 |
| 番号 | メソッドと説明 |
|---|---|
| 1 | new net.Socket([options]) 新しいソケット オブジェクトを構築します。 |
| 2 | socket.connect(port[, host][, connectListener]) ポート port とホスト host を指定してソケット接続を作成します。 パラメータ host のデフォルトは localhost です。 通常、net.createConnection でソケットを開く必要はありません。 独自のソケットを実装した場合にのみ使用されます。 |
| 3 | socket.connect(path[, connectListener]) 指定されたパスの UNIX ソケットを開きます。 通常、net.createConnection でソケットを開く必要はありません。 独自のソケットを実装した場合にのみ使用されます。 |
| 4 | socket.setEncoding([encoding]) エンコーディングを設定する |
| 5 | socket.write(data[, encoding][, callback]) ソケットでデータを送信します。 2 番目のパラメーターは文字列のエンコーディングを指定します。デフォルトは UTF8 エンコーディングです。 |
| 6 | socket.end([data][, encoding]) ソケットを半分閉じます。 たとえば、FIN パケットを送信します。 おそらくサーバーがまだデータを送信していると思われます。 |
| 7 | socket.destroy() このソケットで I/O アクティビティがないことを確認してください。 エラーが発生した場合にのみ必要です。 (エラーの処理など)。 |
| 8 | socket.pause() データの読み取りを一時停止します。 つまり、データ イベントは発生しなくなります。 アップロードを制御するのに非常に便利です。 |
| 9 | socket.resume() pause() を呼び出した後、データの読み取りを再開したい。 |
| 10 | socket.setTimeout(timeout[, callback]) ソケットがタイムアウト ミリ秒を超えてアイドル状態になった後にタイムアウトするように設定します。 |
| 11 | socket.setNoDelay([noDelay]) Nagle アルゴリズムを無効にします。 デフォルトでは、TCP 接続は Nag アルゴリズムを使用し、送信前にデータをバッファリングします。 noDelay を true に設定すると、socket.write() が呼び出されたときにすぐにデータが送信されます。 noDelay のデフォルトは true です。 |
| 12 | socket.setKeepAlive([enable][,initialDelay]) 長時間接続機能を無効/有効にし、最初のオプションのセットを送信しますソケット上で長時間接続されているプローブをアイドル状態にする前の初期遅延。 デフォルトは false です。 initialDelay (ミリ秒単位) を設定して、最後に受信したパケットと最初の長時間接続されたプローブの間の遅延を設定します。 InitialDelay を 0 に設定すると、デフォルト (または以前の) 値が維持されます。 デフォルト値は 0 です。 |
| 13 | socket.address() オペレーティング システムは、バインドされたアドレス、プロトコル ファミリ名、およびサーバー ポートを返します。 返されるオブジェクトには、{ port: 12346、family: 'IPv4'、address: '127.0.0.1' } などの 3 つのプロパティがあります。 |
| 14 | socket.unref() これがイベント システム内の唯一のアクティブなサーバーの場合、unref を呼び出すとプログラムを終了できます。 サーバーがすでに unrefed されている場合、unref を再度呼び出しても効果はありません。 |
| 15 | socket.ref() unref の逆。これが唯一のサーバーの場合、以前に参照されていないサーバーで ref を呼び出します。プログラムを終了させます (デフォルトの動作)。 サーバーがすでに参照されている場合、ref を再度呼び出しても効果はありません。 |
server.js ファイルを作成します。コードは次のとおりです。
var net = require('net');
var server = net.createServer(function(connection) {
console.log('client connected');
connection.on('end', function() {
console.log('クライアントが接続を閉じました');
});
connection.write('Hello World!\r\n');
connection.pipe(connection);
});
server.listen(8080, function() {
console.log('server is listening');
});
上記のサーバー コードを実行します。
$ node server.js server is listening # サービスが作成され、ポート 8080 でリッスンします
新しいウィンドウを開いて client.js ファイルを作成します。コードは次のとおりです。
var net = require('net');
var client = net.connect({port: 8080}, function() {
console.log('サーバーに接続!');
});
client.on('data', function(data) {
console.log(data.toString());
client.end();
});
client.on('end', function() {
console.log('サーバーから切断');
});
上記のクライアント コードを実行します。
サーバーに接続! Hello World! サーバーから切断
Node.js の DNS モジュールは、ドメイン名を解決するために使用されます。 DNS モジュールをインポートするための構文は次のとおりです。
var dns = require("dns")
| 番号 | メソッドと説明 |
|---|---|
| 1 | dns.lookup(hostname[, options], callback) ドメイン名 (「runoob.com」など) を解決します。最初に見つかったレコードは A (IPV4) または AAAA (IPV6) です。 パラメータ オプションにはオブジェクトまたは整数を指定できます。 オプションが指定されていない場合は、IP v4 アドレスと v6 アドレスの両方が問題ありません。 options が整数の場合、4 または 6 でなければなりません。 |
| 2 | dns.lookupService(address, port, callback) getnameinfo を使用して、受信アドレスとポートをドメイン名とサービスに解決します。 |
| 3 | dns.resolve(hostname[, rrtype], callback) ドメイン名 (「runoob.com」など) を解決します。 a rrtype レコードタイプを指定する配列。 |
| 4 | dns.resolve4(hostname, callback) dns.resolve() と同様に、IPv4 (A レコード) のみをクエリできます。 アドレス IPv4 アドレスの配列 (例: ['74.125.79.104', '74.125.79.105', '74.125.79.106'])。 |
| 5 | dns.resolve6(hostname, callback) dns.resolve4() と同様に、IPv6 のみをクエリできます (AAAA クエリ)< /td> |
| 6 | dns.resolveMx(hostname, callback) dns.resolve() と同様に、メール交換 (MX レコード) のみをクエリします。 |
| 7 | dns.resolveTxt(hostname, callback) dns.resolve() と同様ですが、テキスト クエリ (TXT レコード) のみに使用されます。 address はテキスト レコードの 2 次元配列です。 (例: [ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ])。 各サブ配列にはレコードの TXT チャンクが含まれます。 用途に合わせて連結したり、別々に使用したりできます。 |
| 8 | dns.resolveSrv(hostname, callback) dns.resolve() と同様に、サービス レコード (SRV レコード) のみをクエリできます。 。 アドレスは、ホスト名に使用できる SRV レコードの配列です。 SRV レコード属性には、優先度、重み、ポート、および名前があります (例: [{'priority': 10, 'weight': 5, 'port': 21223, 'name ': 'service.example.com'}, .. .])。 |
| 9 | dns.resolveSoa(hostname, callback) dns.resolve() と同様に、権限のあるレコード (SOA レコード) のみをクエリできます。 。 |
| 10 | dns.resolveNs(hostname, callback) dns.resolve() と同様に、ドメイン ネーム サーバー レコード (NS) のみをクエリできます。記録)。 アドレスはネームサーバー レコードの配列です (ホスト名を使用できます) (例: ['ns1.example.com'、'ns2.example.com'])。 |
| 11 | dns.resolveCname(hostname, callback) dns.resolve() と同様に、エイリアス レコード (CNAME レコード) のみをクエリできます。 。 アドレスは、ホスト名に使用できるエイリアス レコードの配列です (例: ['bar.example.com'])。 |
| 12 | dns.reverse(ip, callback) IP アドレスを逆解決し、その IP アドレスのドメイン名の配列を指します。 |
| 13 | dns.getServers() 現在解決されている IP アドレスの配列の文字列を返します。 |
| 14 | dns.setServers(servers) 一連の IP アドレスを解決サーバーとして指定します。 |
以下は、dns.resolve() メソッドの有効な rrtypes 値です。
'A' IPV4 アドレス、デフォルト'AAAA' IPV6 アドレス'MX' メール交換記録'TXT' テキスト レコード'SRV' SRV レコード'PTR' (IP 逆引き参照用)'NS' ネームサーバー レコード'CNAME' エイリアス レコード'SOA' 認可レコードの初期値各 DNS クエリは次のエラー コードを返す場合があります:
dns.NODATA: データ応答がありません。dns.FORMERR: クエリ形式エラー。dns.SERVFAIL: 一般的なエラー。dns.NOTFOUND: ドメイン名が見つかりませんでした。dns.NOTIMP: 要求された操作は実装されませんでした。dns.REFUSED: クエリが拒否されました。dns.BADQUERY: 不正なクエリ形式です。dns.BADNAME: ドメイン名の形式エラー。dns.BADFAMILY: アドレス プロトコルはサポートされていません。dns.BADRESP: 応答形式エラー。dns.CONNREFUSED: DNS サーバーに接続できませんでした。dns.TIMEOUT: DNS サーバーへの接続がタイムアウトしました。dns.EOF: ファイルの終わり。dns.FILE: ファイルの読み取りエラー。dns.NOMEM: メモリが不足しています。dns.DESTRUCTION: トンネルは破壊されました。dns.BADSTR: 不正な形式の文字列。dns.BADFLAGS: 不正な識別子です。dns.NONAME: 指定されたホストは数値ではありません。dns.BADHINTS: 無効な HINTS 識別子。dns.NOTINITIALIZED: c c-ares ライブラリは初期化されていません。dns.LOADIPHLPAPI: ihlpapi.dll の読み込み中にエラーが発生しました。dns.ADDRGETNETWORKPARAMS: GetNetworkParams 関数が見つかりませんでした。dns.CANCELLED: DNS ルックアップをキャンセルします。main.js ファイルを作成します。コードは次のとおりです。
var dns = require('dns');
dns.lookup('www.github.com', function onLookup(err, address, family) {
console.log('ip:', address);
dns.reverse(address, function (err, hostnames) {
if (err) {
console.log(err.stack);
}
console.log('逆分析 ' + address + ': ' + JSON.stringify(hostnames));
});
});
上記のコードを実行すると、結果は次のようになります。
address: 192.30.252.130 reverse for 192.30.252.130: ["github.com"]
Node.js Domain(domain) は、非同期コードの例外処理を簡素化し、try catch ではキャッチできない例外をキャッチして処理できます。 Domain モジュールをインポートする構文は次のとおりです。
var domain = require("domain")
domain モジュールは、複数の異なる IO 操作をグループとして処理します。 イベントを登録し、domain にコールバックします。エラー イベントが発生するかエラーがスローされると、ドメイン オブジェクトに通知されます。これによりコンテキストが失われることはなく、エラーによりプログラムが直ちに終了することもありません。これは異なります。 process.on('uncaughtException') から。
Domain モジュールは、暗黙的バインディングと明示的バインディングに分類できます。
| 番号 | メソッドと説明 |
|---|---|
| 1 | domain.run(関数) 提供された関数をドメインのコンテキストで実行し、すべてのイベント ディスパッチャ、タイマー、および基礎となるリクエストを暗黙的にバインドします。 |
| 2 | domain.add(emitter) イベントを明示的に追加する |
| 3 | domain.remove(emitter) イベントを削除します。 |
| 4 | domain.bind(callback) 返される関数は、指定されたコールバック関数のラッパーです。 返された関数が呼び出されると、スローされたすべてのエラーがこのドメインのエラー イベントにルーティングされます。 |
| 5 | domain.intercept(callback) domain.bind(callback) と同様。 スローされたエラーを捕捉するだけでなく、この関数に引数として渡された Error オブジェクトもインターセプトします。 |
| 6 | domain.enter() ドメインにバインドされた非同期呼び出しのコンテキストを入力します。 |
| 7 | domain.exit() 現在のドメインを終了し、異なるチェーンの非同期呼び出しのコンテキストに切り替えます。 domain.enter() に対応します。 |
| 8 | domain.dispose() ドメイン オブジェクトを解放し、ノード プロセスにリソースのこの部分を再利用させます。 |
| 9 | domain.create() ドメイン オブジェクトを返します。 |
| 番号 | 属性と説明 |
|---|---|
| 1 | domain.members ドメイン オブジェクトに追加されたドメイン タイマーとイベント エミッターの配列。 |
main.js ファイルを作成します。コードは次のとおりです。
var EventEmitter = require("events").EventEmitter;
var domain = require("domain");
var emitter1 = new EventEmitter();
// ドメインを作成する
var domain1 = domain.create();
domain1.on('error', function(err){
console.log("domain1 このエラーを処理する ("+err.message+")");
});
// 明示的なバインディング
domain1.add(emitter1);
emitter1.on('error',function(err){
console.log("このエラーを処理するリスナー ("+err.message+")");
});
emitter1.emit('error',new Error('リスナーが処理します'));
emitter1.removeAllListeners('error');
emitter1.emit('error',new Error('domain1 によって処理されます'));
var domain2 = domain.create();
domain2.on('error', function(err){
console.log("domain2 このエラーを処理する ("+err.message+")");
});
// 隐式绑定
domain2.run(function(){
var emitter2 = new EventEmitter();
emitter2.emit('error',new Error('domain2 によって処理されます'));
});
domain1.remove(emitter1);
emitter1.emit('error', new Error('例外に変換されると、システムがクラッシュします。'));
执行以上代码,结果如下所示:
このエラーを処理するリスナー (リスナーによって処理される)
domain1 がこのエラーを処理します (domain1 によって処理されます)
domain2 がこのエラーを処理します (domain2 によって処理されます)
events.js:72
throw er; // Unhandled 'error' event
^
Error: 例外に変換されると、システムがクラッシュします。
at Object.<anonymous> (/www/node/main.js:40:24)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:929:3