Node.js其他模块

清明假期过得挺快,3天说没就没了,天热了今天把房间打扫了一下,看着挺舒心的。周六了解了下进程管理的Process模块,由于进程管理知识也比较多,今天先把其他的一些模块了解一下,进程管理这块以后慢慢学。

一、OS模块

OS模块主要是获取操作系统信息。

var os = require(‘os‘);
//返回一个指向操作系统默认临时目录的字符串 如果需要临时存储文件,然后再删除可以放在这
console.log("tmpdir :\t" + os.tmpdir());
//根据机器的体系结构,对于大端和小端编码,分别返回BE或LE
console.log("endianness :\t" + os.endianness());
//机器的主机名
console.log("hostname :\t" + os.hostname());
//操作系统类型字符串类型
console.log("type :\t\t" + os.type());
//平台名称 字符串类型
console.log("platform :\t" + os.platform());
//体系结构 字符串类型
console.log("arch :\t\t" + os.arch());
//操作系统发布版本
console.log("release :\t" + os.release());
//操作系统已经运行多久,返回以秒为单位的时间戳
console.log("uptime :\t" + os.uptime());
//在基于UNIX系统中,返回一个包含[1,5,15]分钟的系统负载值得数组
console.log("loadavg :\t" + os.loadavg());
//系统内存容量 字节单位
console.log("totalmem :\t" + os.totalmem());
//可用的系统内存 字节单位
console.log("freemem :\t" + os.freemem());
//EOL包含操作系统相应的行尾字符,用在处理字符串数据时,使一个应用程序跨平台兼容
console.log("EOL :\t" + os.EOL);
//返回描述了model(型号)、speed(速度)和time(时间)的对象的数组,此数组包含CPU已经花费在user、nice、sys、dle、irq上的时间
console.log("cpus :\t\t" + JSON.stringify(os.cpus()));
//返回一个对象数组,描述绑定到操作系统中的每个网络接口上的address(地址)和family(地址族)
console.log("networkInterfaces : " +
            JSON.stringify(os.networkInterfaces()));
tmpdir :    C:\Users\ADMINI~1\AppData\Local\Temp
endianness :    LE
hostname :    Lenovo-PC
type :        Windows_NT
platform :    win32
arch :        x64
release :    10.0.10240
uptime :    857903.0353439
loadavg :    0,0,0
totalmem :    4202979328
freemem :    609837056
EOL :    

cpus :            [{"model":"Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz","speed":2494,"times":{"user":14228468,"nice":0,"sys":16551359,"idle":266524781,"irq":3004875}},{"model":"Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz","speed":2494,"times":{"user":13634187,"nice":0,"sys":17665812,"idle":266004171,"irq":5612906}},{"model":"Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz","speed":2494,"times":{"user":14396953,"nice":0,"sys":17213171,"idle":265694046,"irq":2041984}},{"model":"Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz","speed":2494,"times":{"user":15294390,"nice":0,"sys":19912703,"idle":262097078,"irq":2563078}}]
networkInterfaces : {"WLAN":[{"address":"fe80::ec29:33b8:7d3d:28e0","netmask":"ffff:ffff:ffff:ffff::","family":"IPv6","mac":"48:5a:b6:d5:44:8f","scopeid":16,"internal":false},{"address":"192.168.1.103","netmask":"255.255.255.0","family":"IPv4","mac":"48:5a:b6:d5:44:8f","internal":false}],"Loopback Pseudo-Interface 1":[{"address":"::1","netmask":"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff","family":"IPv6","mac":"00:00:00:00:00:00","scopeid":0,"internal":true},{"address":"127.0.0.1","netmask":"255.0.0.0","family":"IPv4","mac":"00:00:00:00:00:00","internal":true}],"本地连接* 13":[{"address":"2001:0:5ef5:79fb:3079:3794:c272:4da6","netmask":"ffff:ffff:ffff:ffff::","family":"IPv6","mac":"00:00:00:00:00:00","scopeid":0,"internal":false},{"address":"fe80::3079:3794:c272:4da6","netmask":"ffff:ffff:ffff:ffff::","family":"IPv6","mac":"00:00:00:00:00:00","scopeid":9,"internal":false}]}

Process finished with exit code 0

二、util模块

1.格式化字符串

//util.format(format,[....])
//util.format(format,[....])接收一个格式化字符串作为第一个参数,并返回一个格式化后的字符串
//占位符类型:%s:指定字符串  %d:指定一个数值(可是整数或浮点数) %j:指定一个JSON可转换为字符串的对象
//%:如果%后保留为空,则不作为占位符
//同时有几个要注意的地方:
//1.占位符比参数多时,多余的占位符如%s都不会被替换
//2.参数比占位符多时,多余的参数被转换为字符串,然后用空格分隔符连接
//3.如果第一个参数不是一个格式字符串,那么会把每个参数都转换为字符串,用空格分隔符将其连接起来,并返回
var result=util.format(‘% s=%s‘,‘abc‘);
console.log(result);
result=util.format(‘%s=%s‘,‘abc‘);
console.log(result);
result=util.format(‘%s‘,‘abc‘,‘def‘);
console.log(result);
result=util.format(‘1‘,‘abc‘,‘def‘);
console.log(result);
% s=abc
abc=%s
abc def
1 abc def
4 Apr 19:40:47 - 1 abc def

Process finished with exit code 0

2.检查对象类型

查看util模块的源码有isArray()、isBoolean()、isNull()、isNullOrUndefined()、isNumber()、isString()、isSymbol()、isUndefined()、isRegExp()、isObject()、isDate()、isError()、isFunction()、isPrimitive()、isBuffer()函数。

var  result=util.isArray([1,2,3]);
console.log(result);
result=util.isNull(result);
console.log(result);
result=util.isDate(new Date());
console.log(result);
true
false
true

Process finished with exit code 0

3.同步写入输出流

util提供了debug()、error()、puts()、print()、log()等方法同步写数据到stdout、stderr。这意味着这一进程保持阻塞,直到数据被写出来。但是在看它的源码时已经提示这些方法已经被其他方法替换了。

 ‘util.exec is deprecated. Use child_process.exec instead.‘
 ‘util.print is deprecated. Use console.log instead.‘
 ‘util.puts is deprecated. Use console.log instead.‘
 ‘util.debug is deprecated. Use console.error instead.‘
 ‘util.error is deprecated. Use console.error instead.‘
 ‘util.pump is deprecated. Use readableStream.pipe instead.‘

4.将JavaScript对象转换为字符串

util.inspect(object,[options])方法检查对象,并返回对象的字符串表示形式。这个方法在上面博客的也有提到。

options可包含以下属性 :

showHidden:true时,该对象的不可枚举的属性也被转换成字符串,默认false

depth:当格式化属性也是对象时,限制检查过程遍历的深度。可以防止无限循环,并防止复杂的对象花费大量的CPU周期。默认为2.如果为空(null),则可无限递归下去。

colors:true时,输出使用ANSI颜色代码的样式,默认false。

customInspect:false时,被检查的对象定义的任何自定义inspect()函数都不会被调用,默认true。

可以把自定义的inspect()函数附加到一个对象,以便控制输出。

var  obj={first:‘brad‘,last:‘dayley‘};
obj.inspect=function(depth){
    return ‘{name:"‘+this.first+" "+this.last+‘"}‘;
};
console.log(util.inspect(obj));
{name:"brad dayley"}

Process finished with exit code 0

5.从其他对象继承功能

这个功能在之前已经了解过了。http://www.cnblogs.com/5ishare/p/5299493.html

三、使用dns模块

dns模块能够解析dns域名、查找域、或做方向查找。常见以下方法 :

lookup(domain,[family],callback):解析域名。family属性可以是4、6或者null。4:解析第一个找到的A(IPv4)记录,6:解析第一个找到的AAAA(IPv6)记录,null:两者都解析,默认null。callback函数第一个接收error,第二个接收一个IP地址的数组。function(error,addresses)

resolve(domain,[rrtype],callback):把域名解析成类型由rrtype指定的记录数组。function(error,addresses)

A:IPv4地址(默认)

AAAA:IPv6地址。

MX:邮件交换记录。

TXT:文字记录。

SRV:SRV记录。

PTR:反向IP查找。

NS:名称服务器记录。

CNAME:规范名称记录。

resolve4(domain,callback):同dns.resolve()。只解析A记录。

resolve6(domain,callback):同dns.resolve()。只解析AAAA记录。

resolveMX(domain,callback):同上,只解析MX记录

resolveTxt(domain,callback):同上,只解析TXT记录

resolveSrv(domain,callback):同上,只解析SRV记录

resolveNs(domain,callback):同上,只解析NS记录

resolveCname(domain,callback):同上,只解析CNAME。

reverse(ip,callback):对IP地址进行方向查找。如果发生错误,则callback函数接收一个error对象,如果查找成功,则接收域的数组。function(error,dimains).

var dns = require(‘dns‘);
console.log("Resolving www.baidu.com . . .");
dns.resolve4(‘www.baidu.com‘, function (err, addresses) {
  console.log(‘IPv4 addresses: ‘ + JSON.stringify(addresses, false, ‘ ‘));
  addresses.forEach(function (addr) {
    dns.reverse(addr, function (err, domains) {
      console.log(‘Reverse for ‘ + addr + ‘: ‘ + JSON.stringify(domains));
    });
  });
});
Resolving www.baidu.com . . .
IPv4 addresses: [
 "14.215.177.38",
 "14.215.177.37"
]
Reverse for 14.215.177.38: undefined
Reverse for 14.215.177.37: undefined

Process finished with exit code 0
时间: 2024-08-24 02:11:03

Node.js其他模块的相关文章

Node.js(二)——模块与包管理工具

http,process等等这些都是模块 一.Node.js的模块与Commonjs规范 1.js的天生缺陷--缺少模块化管理机制 ·表现--JS中容易出现变量被覆盖,方法被替代的情况(既被污染).特别是存在依赖关系时,容易出现错误.这是因为JS缺少模块管理机制,来隔离实现各种不同功能的JS判断,避免它们相互污染. ·解决--经常采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,保证代码安全运行.jQuery中有许多变量和方法,但是无法直接访问,必须通过j

Node.js文件模块fs监视文件变化

Node.js文件模块fs监视文件变化 Node中文件模块fs监视文件的函数源码如下: fs.watch = function(filename) { nullCheck(filename); var watcher; var options; var listener; if (util.isObject(arguments[1])) { options = arguments[1]; listener = arguments[2]; } else { options = {}; listen

Node.js 的模块系统

Node.js的模块系统是借鉴 CommonJS 的 Modules 规范实现的,因此,下面我们需要先了解 CommonJS 的 Modules 规范,希望对大家学习Node.js有所帮助. CommonJS 的 Modules 规范 CommonJS 对模块的定义非常简单,主要分为 模块引用.模块定义和模块标识三个部分. 1. 模块引用 - require() 方法 2. 模块定义 - module.exports 对象 3. 模块标识 - 传递给 require() 方法的参数 通过 Com

node.js基础模块http、网页分析工具cherrio实现爬虫

node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言      说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherrio. 使用http直接获取url路径对应网页资源,然后使用cherrio分析. 这里我主要学习过的案例自己敲了一遍,加深理解.在coding的过程中,我第一次把jq获取后的对象直接用forEach遍历,直接报错,是因为jq没有对应的这个方法,只有js数组可以调用. 二.知识点    ①:supera

(译)Node.js的模块-exports和module.exports

原文标题:Node.js Module – exports vs module.exports原文链接:http://www.hacksparrow.com/node-js-exports-vs-module-exports.html exports 和 module.exports 有什么区别? 你一定很熟悉 Node.js 模块中的用来在你的模块中创建函数的 exports 对象,就像下面这样. 创建一个叫做rocker.js的文件: exports.name = function() {

node.js笔记——模块的开发

模块是什么? 简单来说模块是用来将实现某个功能的代码进行封装以便在其他项目中通过简单引入的方式实现模块中封装的功能的一个东西!!(我更想管他叫小程序). 模块的引入 模块的引入使用reqiure()函数来实现例如引入http模块 var h = require("http"); 这里需要注意的是require()加载函数可以加载指定的js文件,当引入的不是某个js文件而是一段没有扩展名的字符时,默认node.js会加载当前根目录下的node_modules文件夹下面的文件夹里的文件 并

避免多层回调,Node.js异步模块Async初使用

原来写的一个分页查询,回调了好几层. exports.list = function(req,res) { var params = {}; var current_page = common_util.get_param_value(req,'current_page','Number',1); var page_size = common_util.get_param_value(req,'page_size','Number',10); var start_index = common_u

Node.js:模块

概要:本篇博客主要介绍node.js的模块 1.创建模块 在node.js中创建一个模块非常简单,因为一个文件就是一个模块.我们只需要明白如何从其他文件中获取这个模块.Node.js提供了 exports 和 require 两个对象,其中exports是模块的公开接口,require用于从外部获取一个模块的接口,即所获取模块的exports对象.看下面的例子. 创建一个module.js的文件,内容是: var name; exports.setName = function(thyName)

Node.js开发 ---- 模块 require和 exports

蟹蟹https://liuzhichao.com/p/1669.html 什么是模块? Node.js通过实现CommonJS的Modules/1.0标准引入了模块(module)概念,模块是Node.js的基本组成部分.一个node.js文件就是一个模块,也就是说文件和模块是一一对应的关系.这个文件可以是JavaScript代码,JSON或者编译过的C/C++扩展. Node.js的模块分为两类,一类为原生(核心)模块,一类为文件模块. 在文件模块中,又分为3类模块.这三类文件模块以后缀来区分

Node.js http模块

http模块提供了两个常用的功能, 创建一个http server和做http请求. 创建一个http server var http = require('http'); var server = http.createServer(); server.on('request', function(req, res){ res.writeHead('Content-Type', 'text/html'); res.end('hello world'); }); server.listen(89