本篇文章给大家带来的内容是关于node.js中全局对象的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
一:node全局对象之路径
1. 路径
_filename ---当前文件路径
_dirname ----当前文件所在的目录
例子:
console.log(__filename);console.log(__dirname);输出结果:/users/macshiguang/node/npm2/index.js/users/macshiguang/node/npm2
二:node全局对象之console
2.console(控制台)
(1)占位符
%s ----字符串
console.log("hello %s世界","world"); //输出:hello world世界
%d ---数值(整数或浮点数)
console.log("价格: %d","88"); //输出:价格: 88
%i ----integer,整型
console.log("%i",300.8); // 输出300
%f ----floating point value,浮点型
console.log("%f",200.3); //输出200.3
%j ----json,如果参数包含循环引用,则用字符串‘[circular]’替换
console.log('json:%j',{name:'zhang'}); //json:{"name":"zhang"}
console.log({name:'zhang'}); //输出对象:{ name: 'zhang' }
(2)console对象属性
log() ---日志
count() ---计数
console.count();console.count('tag'); // default: 1 tag: 1console.count();console.count('tag'); // default: 2 tag: 2console.count();console.count('tag');// default: 3 tag: 3
countreset() ---重置计数
console.countreset('tag');
console.count('tag'); //连接以上count,tag: 1
dir() ---输出属性和方法
// 输出某个参数
console.dir(global);
// 输出参数中的某个属性
console.log(global,{colors:true})
//输出该属性的一级,depth当格式化对象时要递归多少次
console.dir(global,{colors:true,depth:1});
time() ---计算一段程序的运行时间
timeend() ---计算一段程序的运行时间
// 时间console.time();for (let i = 0;i<1000;i++){ i * 15 +120 /34;}console.timeend();//undefined: 0.054ms
group() ---将后续行的缩进增加两个空格
groupend() ---将后续行的缩进删除两个空格
console.log("团");console.group();console.log("一营");console.group();console.log("一连");console.log("二连");console.groupend();console.log("二营");console.group();console.log("一连");console.log("二连");console.groupend();console.groupend();console.log("炮兵团");//输出团 一营 一连 二连 二营 一连 二连炮兵团
error() ---错误
console.error("错误");
warn() ---警告
console.warn("警告");
trace ---调试信息
console. trace ("trace");
(3)字符画
figlet包
安装:npm install figlet
引入:
figlet("hello world !",function (err,data) { console.log(data);})
三. node全局对象之定时器
3、定时器
(1)设置定时
settimeout(callback , delay[ , args......])
setinterval(callback, delay[ , args......])
setimmediate(callback, [ , args......]) ---异步执行
例子:
// 定时器,异步执行(先同步后异步)let myimmediate = setimmediate(function () { console.log("setimmediate立即执行");})//同步执行settimeout(function (name) { console.log("settimeout");})//输出结果settimeoutsetimmediate立即执行
(2)取消定时
cleartimeout(timeout)
clearinterval(timeout)
clerimmediate(immediate)
例子:
let myimmediate = setimmediate(function () { console.log("setimmediate立即执行");})clearimmediate(myimmediate);
四:node全局对象之module
4、module(模块)
属性:
exports ---模块中导入的方法,属性,类, module.exports===exports,改变属性值用:module.exports
require() ---引入模块module.require() ===require()
require.main ---得到直接使用node运行的模块,require.main === module
parent ---父模块
children ---子模块
filename ---当前模块的路径,等同于__filename
id ---
loaded ---
paths ---
五. node全局对象之process
5. process(进程)
(1)对象属性
pid ---进程号
title ---进程名
argv ---命令行选项组成的数组
argv0 ---命令行选项的第一个
env ---环境信息
execpath ---node.exe的路径
arch ---cpu架构
versions ---版本号信息
platform ---平台信息/操作系统信息
cwd() --返回进程工作目录(当前运行文件的目录)
memoryusage() --返回内存使用情况,单位byte
exit() ---结束进程
例子:www/test-01.js
console.log(process.pid);//13196console.log(process.title);//d:\webstorm\webstorm 2017.2\bin\runnerw.execonsole.log(process.argv);//[ 'd:\\nodejs\\node.exe', 'd:\\nodejs\\www\\test\\test-01.js' ]console.log(process.argv0);//d:\nodejs\node.execonsole.log(process.cwd());//d:\nodejs\www\test//开启异步操作settimeout(function () {},100000);
(2)输入输出流(i/o)
process.stdin ---输入
process.stdout ---输出
例子一:
// 输出流process.stdout.write("hello");process.stdout.write(",world");// 输入流process.stdin.on('data',function (name) { console.log('请输入用户名:'+name);})//输出:hello,world请输入用户名:zhang请输入用户名:zhang
例子二:
输入任意两个数,自动计算其和
let a;let b;process.stdout.write("请输入a的值:");process.stdin.on('data',function (chunk) { if(!a){ a=number(chunk); process.stdout.write("请输入b的值:"); }else { b=number(chunk); process.stdout.write("a+b的和为:"+(a + b)); }})
(3)exit codes
正常情况下,无异步操作正在等待,node.js以状态码0退出
未捕捉异常......
详情:http://nodejs.cn/api/process.html#process_exit_codes
六. node全局对象之buffer
6. buffer
(1) 什么是buffer
读取或者操作二进制数据流
buffer类的实例类似整数数组,但buffer的大小是固定的且在v8堆外分配物理内存。
使用buffer来存储需要占用大量内存的数据
(2)buffer的应用
读取文件内容时,返回是buffer
使用net或者http模块来接受网络数据时,data事件的参数也是一个buffer
使用node.js编写一些底层功能时,比如:网络通信模块,某个数据库的客户端模块,或需从文 件中操作大量结构化数据时
(3)类方法
buffer.alloc() ---分配长度,每个元素自动填充0,每个元素都是一个字节byte(8bit)
通过在http://tool.oschina.net/hexconvert中查看进制转换
例子:
// 创建buffer// 为buffer对象分配10个长度,每个元素自动填充0//buffer的每个元素都是一个字节byte(8bit)const buf = buffer.alloc(10);buf[0] =10;buf[1] =250;//转为10进制为fabuf[2] =300;//转为10进制为2cconsole.log(buf);//<buffer 0a fa 2c 00 00 00 00 00 00 00>console.log(buf.length);//10
buffer.from() ---快速创建buffer
例子:
// 快速创建// 数组const buf2 = buffer.from([1,2,260,4]);console.log(buf2);//<buffer 01 02 04 04>console.log(buf2.length);//4// 字符串,需utf-8编码const buf3 =buffer.from('你好','utf8');console.log(buf3);//<buffer e4 bd a0 e5 a5 bd>console.log(buf3.length);//6
buffer.allocunsafe() ---创建buffer
例子:
// 直接从内存开辟空间,10个字节,没有初始化const buf4 = buffer.allocunsafe(10);console.log(buf4);//输出有内容,<buffer 98 21 49 7e bf 02 00 00 08 22>,// 直接从内存开辟空间,10个字节,没有初始化(可能回保存好旧的数据)速度比较快buf4.fill('a');//每一个填充aconsole.log(buf4.length);//4
buffer.allocunsafeslow() --
buffer.bytelength() ---
buffer.compare() ---
buffer.concat() ---拼接buffer
例子:综和上面创建的buffer:
//拼接bufferconst buf5 = buffer.concat([buf,buf2]);console.log(buf5);//<buffer 0a fa 2c 00 00 00 00 00 00 00 01 02 04 04>console.log(buf5.length);//14
isbuffer() ---
isencoding() ---
poolsize属性
tostring() ---buffer输出
例子:综合以上例子
// buffer 输出字符串console.log(buf.tostring('hex'));//console.log(buf3.tostring('utf8'));//你好
(4) buffer对象方法
buf[index]
buf.buffer
buf.compare()
buf.copy()......
详情见:http://nodejs.cn/api/buffer.html
相关推荐:
以上就是node.js中全局对象的详细介绍的详细内容。