全局变量和API
来源:Node.js
全局变量
在Nodejs中使用global定义全局变量,global aaa="aaa"
1 | // require放在这里,child.js无法读取全局变量name |
在浏览器中定义的全局变量都存于window,而Nodejs存于global,不同的环境需要判断
于是ECMAScript 2020推出了globalThis全局变量,Nodejs环境中等于global ,浏览器环境中则等于window
全局API
Nodejs没有DOM和BOM,而ECMAScript API都能在Nodejs全局使用,例如setTimeout
、setInterval
、Promise
、Math
、console
(被重写)、Date
、fetch
( node v18 )等
除此之外还有Nodejs环境自己的全局API
__dirname
:表示当前模块所在目录的绝对路径__filename
:表示当前模块文件的绝对路径,包括文件名和文件拓展名require
和module
:见模块化process
:进程对象process.argv
:一个包含命令行参数的数组- 第一个元素:Nodejs的执行路径
- 第二个元素:当前执行的JavaScript文件的路径
- 之后的元素:传递给脚本(node命令)的命令行参数
process.env
:一个包含当前环境变量的对象,可以访问、操作环境变量process.cwd()
:返回当前工作目录的路径process.on(event,listener)
:注册进程事件监听器,可以监听诸如exit
、uncaughtException
等事件,并在事件发生时执行回调process.exit([code])
:退出当前的Nodejs进程,参数是可选的退出码process.pid
当前进程的进程ID- 还有其他一些可以用于监控进程、设置信号处理、发送IPC消息等的属性和方法
Buffer
:缓冲区- 创建Buffer实例
Buffer.alloc(size[, fill[, encoding]])
:创建一个指定大小的新Buffer
实例,初始内容为零,fill
参数可填充缓冲区,encoding
参数指定填充的字符编码Buffer.from(array)
:创建一个包含给定数组的Buffer
实例Buffer.from(string[, encoding])
:创建一个包含给定字符串的Buffer
实例- Nodejs 6.0以上删除了Buffer构造函数的使用,所以应该使用上述方法创建Buffer实例
- 读取和写入数据
buffer[index]
:通过索引读取或写入Buffer
实例中的特定字节buffer.length
:获取Buffer
实例的字节长度buffer.toString([encoding[, start[, end]]])
:将Buffer
实例转换为字符串
- 转换数据
buffer.toJSON()
:将Buffer
实例转换为JSON对象buffer.slice([start[, end]])
:返回一个新的Buffer
实例,其中包含原始Buffer
实例的部分内容
- 其他方法
Buffer.isBuffer(obj)
:检查一个对象是否是Buffer
实例Buffer.concat(list[, totalLength])
:将一组Buffer
实例或字节数组连接起来形成一个新的Buffer
实例
Buffer
在处理文件、网络通信、加密和解密等操作中非常有用,尤其是在需要处理二进制数据时
- 创建Buffer实例
评论