global全局对象
在Node.js里面有一个叫global的对象,它的属性和方法可以在全局中访问到,即全局变量。
在游览器Javascript中全局对象是window,而Node.js中全局对象是global。
全局变量在所有模块中均可使用。 但以下变量的作用域只在模块内
1 2 3 4 5
| __dirname __filename exports module require()
|
__dirname
1
| console.log(__dirname) # 获取当前模块的文件所在的文件夹名称的绝对路径
|
__filename
1
| console.log(__filename) # 获取当前模块的文件名称-解析后的绝对路径
|
1 2 3
| setImmediate(() => { console.log('坑呀') });
|
1 2 3 4
| let a = setImmediate(() => { console.log('坑呀') }); clearImmediate(a)
|
process 进程
process.cwd()
1
| console.log(process.cwd()) # 方法返回 Node.js 进程当前工作的目录。
|
process.argv
1 2 3 4 5 6 7 8 9 10 11
| console.log(process.argv)
node a.js a=1 b=2
[ 'C:\\Program Files\\nodejs\\node.exe', 'c:\\Users\\windows\\Desktop\\新建文件夹\\a.js', 'a=1', 'b=2' ]
|
process.argv 属性返回一个数组,这个数组包含了启动Node.js进程时的命令行参数。第一个元素为process.execPath。如果需要获取argv[0]的值请参见 process.argv0。第二个元素为当前执行的JavaScript文件路径。剩余的元素为其他命令行参数。
process.env
1
| console.log(process.env)
|
可以修改这个对象
1 2
| process.env.foo = 'bar'; console.log(process.env.foo);
|
但是不可以用这种方法去修改
1
| node http.js 'process.env.foo = "bar"'
|
用 delete从process.env中删除一个属性
1 2 3
| process.env.foo = 'bar'; delete process.env.foo; console.log(process.env.foo); # 输出 undefined
|
注: 在process.env中新增一个属性,会将属性值转换成字符串、 在Windows系统下,环境变量是不区分大小写的。
process.memoryUsage()
1 2 3 4 5 6 7
| console.log(process.memoryUsage()) # 返回Node.js进程的内存使用情况的对象,该对象每个属性值的单位为字节。
{ rss: 23588864, heapTotal: 7708672, heapUsed: 4430656, external: 8224 }
|
rss(resident set size):所有内存占用,包括指令区和堆栈。
heapTotal:”堆”占用的内存,包括用到的和没用到的。
heapUsed:用到的堆的部分。
external: V8 引擎内部的 C++ 对象占用的内存。
process.chdir(directory)
1 2 3 4 5 6 7
| console.log(process.cwd()) process.chdir('..') console.log(process.cwd())
// 输出 '..'切换到上一级目录 C:\Users\windows\Desktop\新建文件夹 C:\Users\windows\Desktop
|
process.nextTick(callback[, …args])
1 2 3
| process.nextTick(function(){ console.log('nextTick'); })
|
参考
http://www.ruanyifeng.com/blog/2017/04/memory-leak.html
http://nodejs.cn/api/process.html#process_process
http://nodejs.cn/api/globals.html