node.js工具模块

作者: 风慕李 | 来源:发表于2017-12-18 15:49 被阅读17次
os 模块提供了一些基本的系统操作函数,具体看如下代码:
node-os.js代码如下
---
var os = require("os");
// 返回操作系统的默认临时文件夹
console.log('tmpdir : ' + os.tmpdir());
// CPU 的字节序
console.log('endianness : ' + os.endianness());
// 主机名
console.log('hostname : ' + os.hostname());
// 操作系统名
console.log('type : ' + os.type());
// 操作系统名
console.log('platform : ' + os.platform());
// 操作系统cpu架构,可能的值有 "x64"、"arm" 和 "ia32"
console.log('arch : ' + os.arch());
// 操作系统发行版本
console.log('release : ' + os.release());
//操作系统运行时间,以秒为单位
console.log('uptime : ' + os.uptime());
// 系统内存总量
console.log('total memory : ' + os.totalmem() + " bytes.");
// 操作系统空闲内存量
console.log('free memory : ' + os.freemem() + " bytes.");
// 数组,返回所安装的每个cpu内核信息:型号、速度、时间
console.log('cpus : ' + os.cpus());
// 获得网络接口列表
console.log('networkInterfaces : ' + os.networkInterfaces());

终端输入:

G:\node\node-tools> node node-os.js
tmpdir : C:\Users\admin\AppData\Local\Temp
endianness : LE
hostname : DESKTOP-H1QO0Q0
type : Windows_NT
platform : win32
arch : x64
release : 10.0.16299
uptime : 454734.2622153
total memory : 8494243840 bytes.
free memory : 3918430208 bytes.

如此一来,关于你电脑的操作系统的基本信息,此处可以一目了然。

path 模块提供了一些用于处理文件路径的小工具,具体看如下代码:
node-path.js代码如下:
---
var path = require("path");
// 格式化路径
console.log('normalize : ' + path.normalize('/node/node-tools..'));
// 连接路径
console.log('join: ' + path.join('node','/node-tools', 'node-path.js'));
// 转换为绝对路径
console.log('resolve : ' + path.resolve('node-path.js'));
//判断是否是绝对路径
console.log('isAbsolute : ' + path.isAbsolute('node-path.js'));
//判断是否是相对路径
console.log('relative : ' + path.relative('node','node-tools','/node-path.js'));
//返回路径中代表文件夹的部分
console.log('dirname : ' + path.dirname('node/node-tools/node-path.js'));
//返回路径中的最后一部分
console.log('basename : ' + path.basename('node-path.js'));
//返回路径字符串的对象path.parse(pathString);返回路径字符串path.format(pathObject)
// 路径中文件的后缀名
console.log('ext name : ' + path.extname('node-path.js'));

终端输入

G:\node\node-tools> node node-path.js
normalize : \node\node-tools..
join: node\node-tools\node-path.js
resolve : G:\node\node-tools\node-path.js
isAbsolute : false
relative : ..\node-tools
dirname : node/node-tools
basename : node-path.js
ext name : .js
net 模块提供了一些用于底层的网络通信的小工具,具体看如下代码:
node-server.js服务端代码:
---
var net = require('net');
// net.createServer创建TCP服务器
var server = net.createServer(function(connection) { 
   console.log('client connected');
//    connection新连接创建后被触发
   connection.on('end', function() {
      console.log('客户端关闭连接');
   });
   connection.write('Hello World!\r\n');
   connection.pipe(connection);
});
// server.listen监听端口
server.listen(4321, function() { 
  console.log('server is listening');
});

执行服务端代码:

G:\node\node-tools> node node-server.js
server is listening on port 4321

创建客户端node-client.js

var net = require('net');
var client = net.connect({port: 4321}, function() {
   console.log('连接到服务器!');  
});
client.on('data', function(data) {
   console.log(data.toString());
   client.end();
});
client.on('end', function() { 
   console.log('断开与服务器的连接');
});

执行客户端代码:

 G:\node\node-tools> node node-client.js
连接到服务器!
Hello 风慕李!

断开与服务器的连接

你可以尝试着执行客户端代码后观看服务端代码的执行打印,或者关闭服务端查看客户端代码执行打印。
关于net模块更多用法请参考官网

DNS模块用于解析域名
node-dns.js代码如下:
---
var dns = require('dns');
//dns.lookup 将域名(比如 'www.github.com')解析为第一条找到的记录 A (IPV4)或 AAAA(IPV6)
dns.lookup('www.github.com', function onLookup(err, address, family) {
    console.log('ip 地址:', address);
    // dns.reverse 将一个域名(如 'runoob.com')解析为一个 rrtype 指定记录类型的数组
    /**
     * rrtypes
    以下列出了 dns.resolve() 方法中有效的 rrtypes值:
    'A' IPV4 地址, 默认 dns.resolve4
    'AAAA' IPV6 地址 dns.resolve6
    'MX' 邮件交换记录 dns.resolveMx
    'TXT' text 记录 dns.resolveTxt
    'SRV' SRV 记录 dns.resolveSrv
    'PTR' 用来反向 IP 查找 
    'NS' 域名服务器记录    dns.resolveNs
    'CNAME' 别名记录 dns.resolveCname
    'SOA' 授权记录的初始值 dns.resolveSoa
    */
    dns.resolve(address, function (err, hostnames) {
        if (err) {
            console.log(err.stack);
        }
        console.log('反向解析 ' + address + ': ' + JSON.stringify(hostnames));
    });
    dns.reverse(address, function (err, hostnames) {
        if (err) {
            console.log(err.stack);
        }
        console.log('反向解析 ' + address + ': ' + JSON.stringify(hostnames));
    });
});

关于dns更多用法请参考这里
终端执行node-dns.js

G:\node> node node-tools/node-dns.js
ip 地址: 192.30.255.112
反向解析 192.30.255.112: ["192.30.255.112"]
反向解析 192.30.255.112: ["lb-192-30-255-112-sea.github.com"]
domain模块简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的异常。
node-domain.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('转换为异常,系统将崩溃!'));

代码或许你看着有点绕,你可以结合终端打印来分析重看代码理解:

G:\node> node node-tools/node-domain.js
监听器处理此错误 (通过监听器来处理)
domain1 处理这个错误 (通过 domain1 处理)
domain2 处理这个错误 (通过 domain2 处理)
events.js:182
      throw er; // Unhandled 'error' event
      ^

Error: 转换为异常,系统将崩溃!
    at Object.<anonymous> (G:\node\node-tools\node-domain.js:39:24)
    at Module._compile (module.js:573:30)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
    at Function.Module.runMain (module.js:609:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:598:3

原文地址 https://gitee.com/wangFengJ/node/tree/master/node-tools

相关文章

  • node工具模块

    Node.js工具模块node工具模块分为OS,Path, Net, DNS, Domain模块 OS 字节顺序 ...

  • 第十二天 长连接(net和socket.io)

    1. Node.js Net 模块(终端交互) Node.js Net 模块提供了一些用于底层的网络通信的小工具,...

  • node之path模块

    Node.js path 模块提供了一些用于处理文件路径的小工具,它是node.js内置模块,所以直接引入就可以:...

  • npm

    npm:是node.js界的程序/模块管理工具,跨平台。

  • bower和npm的依赖管理

    npm 是Node.js 模块管理的标准工具, 同时也可以结合诸如Browserify等其他工具, 用以管理前端....

  • node.js工具模块

    os 模块提供了一些基本的系统操作函数,具体看如下代码: 终端输入: 如此一来,关于你电脑的操作系统的基本信息,此...

  • Node.js<六>

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScr...

  • node.js(十五)

    Node.js 常用工具util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScri...

  • 关于node.js一些模块的记录「FS模块」

    目录 Node.JS教程 FS模块 Path模块 FS模块 Path模块 Node.js path 模块提供了一些...

  • 5-创建及发布node.js模块

    创建node.js模块node.js模块是可以发布在npm上的package,当你要创建一个node.js模块时,...

网友评论

    本文标题:node.js工具模块

    本文链接:https://www.haomeiwen.com/subject/bksmwxtx.html