📜  Node.js 实用模块

📅  最后修改于: 2022-05-13 01:56:37.406000             🧑  作者: Mango

Node.js 实用模块

Node.js 实用程序模块: node.js 中的实用程序模块提供对各种实用程序功能的访问。

句法:

var util = require('util');

node.js 模块库中有各种可用的实用程序模块。这些模块在开发基于节点的 Web 应用程序时非常有用。
node.js 中存在的各种实用程序模块如下:

OS 模块:基于操作系统的 node.js 实用程序模块由 OS 模块提供。

句法:

var os = require('os');

例子:

// Require operating System module
var os = require("os"); 
  
// Display operating System type
 console.log('Operating System type : ' + os.type()); 
  
 // Display operating System platform
 console.log('platform : ' + os.platform()); 
  
 // Display total memory
 console.log('total memory : ' + os.totalmem() + " bytes."); 
  
 // Display available memory 
console.log('Available memory : ' + os.availmem() + " bytes.");

输出:

路径模块: node.js 中的路径模块用于转换和处理各种文件路径。

句法:

var path = require('path');

例子:

// Require path
var path = require('path');
  
// Display Resolve
console.log('resolve:' + path.resolve('paths.js')); 
  
// Display Extension
console.log('extension:' + path.extname('paths.js'));

输出:

DNS 模块: DNS 模块使我们能够使用底层操作系统名称解析功能。实际的 DNS 查找也由 DNS 模块执行。这个 DNS 模块提供了一个异步网络包装器。可以使用以下语法导入 DNS 模块。

句法:

var dns = require('dns');

例子:

// Require dns module
const dns = require('dns'); 
  
// Store the web address
const website = 'www.geeksforgeeks.org';
  
// Call lookup function of DNS
dns.lookup(website, (err, address, family) => { 
    console.log('Address of %s is %j family: IPv%s',
            website, address, family); 
}); 

输出:

Address of www.geeksforgeeks.org is "203.92.39.72"
family: IPv4

网络模块: node.js 中的网络模块用于创建客户端和服务器。与 DNS 模块类似,该模块也提供了一个异步网络包装器。

句法:

var net = require('net');

示例:此示例包含服务器端的代码。

// Require net module
var net = require('net'); 
  
var server =  net.createServer(function(connection) { 
  console.log('client connected'); connection.on('end', function() { 
    console.log('client disconnected');
  }); 
  connection.write('Hello World!\r\n'); connection.pipe(connection); 
});
  
server.listen(8080, function() { 
  console.log('server  listening');
});

输出:

Server listening

示例:此示例包含 net 模块中的客户端。

var net = require('net');
  
var client = net.connect(8124, function() { 
  console.log('Client Connected');
  client.write('GeeksforGeeks\r\n');
});
  
client.on('data', function(data) {
  console.log(data.toString());
  client.end();
});
  
client.on('end', function() {
  console.log('Server Disconnected');
});

输出:

Client Connected 
GeeksforGeeks
Server Disconnected

域模块: node.js 中的域模块用于拦截未处理的错误。拦截可以通过以下任一方式执行:

  • 内部绑定:错误发射器在域的 run 方法内部执行代码。
  • 外部绑定:使用 add 方法将错误发射器显式添加到域中。

句法:

var domain = require('domain');

域模块中的域类提供了一种将未处理的异常和错误路由到活动域对象的机制。它被认为是 EventEmitter 的子类。

句法:

var domain = require('domain');
var child = domain.create();

例子:

var EventEmitter = require("events").EventEmitter; 
var domain = require("domain");
var emit_a = new EventEmitter();
var dom_a = domain.create(); 
  
dom_a.on('error', function(err) { 
  console.log("Error handled by dom_a ("+err.message+")"); 
});
  
dom_a.add(emit_a);
emit_a.on('error', function(err) { 
  console.log("listener handled this error ("+err.message+")"); 
});
  
emit_a.emit('error', new Error('Listener handles this')); 
emit_a.removeAllListeners('error'); 
emit_a.emit('error', new Error('Dom_a handles this')); 
var dom_b = domain.create(); 
  
dom_b.on('error', function(err) {
  console.log("Error handled by dom_b ("+err.message+")"); 
});
  
dom_b.run(function() {
  var emit_b = new EventEmitter(); 
  emit_b.emit('error', new Error('Dom_b handles this')); 
});
   
dom_a.remove(emit_a);
emit_a.emit('error', new Error('Exception message...!'));

输出: