Node.js-全局对象

xiaoxiao2021-03-01  38

一: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: 1 console.count(); console.count('tag'); // default: 2 tag: 2 console.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"); }) //输出结果 setTimeout setImmediate立即执行

(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);//13196 console.log(process.title);//D:\WebStorm\WebStorm 2017.2\bin\runnerw.exe console.log(process.argv);//[ 'D:\\nodejs\\node.exe', 'D:\\nodejs\\www\\test\\test-01.js' ] console.log(process.argv0);//D:\nodejs\node.exe console.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进制为fa buf[2] =300;//转为10进制为2c console.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');//每一个填充a console.log(buf4.length);//4

Buffer.allocUnSafeSlow() --

Buffer.byteLength() ---

Buffer.compare()  ---

Buffer.concat()  ---拼接buffer

例子:综和上面创建的buffer:

//拼接buffer const 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

转载请注明原文地址: https://www.6miu.com/read-4550018.html

最新回复(0)