Nodejs中的常用的模块
- process
- os
- path
- fs
process
process 对象是一个全局变量,提供对 nodejs 进程的相关信息与控制接口。
常用属性
-
argv=>String[]nodejs启动时传入的命令行参数,第一个参数process.execPath/process.argv0, 即node服务的启动执行路径;第二个元素将是正在执行的 JavaScript 文件的路径。其余元素将是任何其他命令行参数。执行命令
node node.js 1 '2=3' 3 4// node.js process.argv.forEach((item, index) => { console.log(`${index}: ${item}`); }); // 0: /Users/dyh/.nvm/versions/node/v10.13.0/bin/node // 1: /Users/dyh/WebstormProjects/node-practice/nodedemo/node.js // 2: 1 // 3: 2=3 // 4: 3 // 5: 4 -
arch=>String返回一个表示操作系统CPU架构的字符串。
e.g:
'arm','arm64','ia32','mips','mipsel','ppc','ppc64','s390','s390x','x32', 或'x64' -
chdir(String dir)=>voidprocess.chdir()方法变更Node.js进程的当前工作目录,如果变更目录失败会抛出异常(例如,如果指定的目录不存在)console.log(`当前目录: ${process.cwd()}`); try { process.chdir('/tmp'); console.log(`更改后目录: ${process.cwd()}`); } catch (err) { console.error(`错误信息: ${err}`); } -
cwd()=>String返回 Node.js 进程的当前工作目录
'/Users/dyh/WebstormProjects/node-practice/nodedemo' -
env=>Object返回当前用户的环境对象,可修改如:
process.env.BROWSER = true{ TERM: 'xterm-256color', SHELL: '/usr/local/bin/bash', // bash所在位置 USER: 'maciej', // 用户名 PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', // 环境变量 PWD: '/Users/maciej', EDITOR: 'vim', SHLVL: '1', HOME: '/Users/maciej', // 用户目录 LOGNAME: 'maciej', _: '/usr/local/bin/node' } -
exit(Integer code)=>void强制退出当前
nodejs进程,即使还有尚未完全完成的异步操作,包括对process.stdout和process.stderr的I/O操作,退出码为code, 默认为0// 如何正确设置退出码,同时让进程正常退出。 if (someConditionNotMet()) { printUsageToStdout(); // 此处设置退出码而不直接调用exit()方法,是为了让进程正常退出,而不是强制退出 process.exitCode = 1; } -
hrtime(Array<Integer> time)=>Array<Integer> = [seconds, nanoseconds]返回当前时间以[seconds, nanoseconds]tuple Array表示的高精度解析值,nanoseconds是当前时间无法使用秒的精度表示的剩余部分,time是上一次调用process.hrtime()的结果,给此参数传入一个用户定义的数组,而不是传入上次调用process.hrtime()的结果,会导致未定义的行为;process.hrtime()返回的时间,都是相对于过去某一时刻的值,与一天中的时钟时间没有关系,因此不受制于时钟偏差。 此方法最主要的作用是衡量间隔操作的性能。const NS_PER_SEC = 1e9; const time = process.hrtime(); // [ 1800216, 25 ] setTimeout(() => { const diff = process.hrtime(time); // [ 1, 552 ] console.log(`Benchmark took ${diff[0] * NS_PER_SEC + diff[1]} nanoseconds`); // benchmark took 1000000552 nanoseconds }, 1000); -
memoryUsage()=>Object返回
Node.js进程的内存使用情况的对象,该对象每个属性值的单位为字节。{ rss: 4935680, // 驻留集大小, 是给这个进程分配了多少物理内存 heapTotal: 1826816, // V8总内存 heapUsed: 650472, // V8已使用内存 external: 49879 // V8管理的,绑定到Javascript的C++对象的内存 } -
pid=>Integer当前进程的PID
-
ppid=>Integer当前父进程的进程ID
-
platform=>String当前运行的
Nodejs进程的操作系统平台 -
nextTick(callback[, ...args])args=> 调用callback时传入的其他参数
将
callback添加到下一个时间点的队列。 一旦当轮的事件循环全部完成,则调用下一个时间点的队列中的所有回调, 其优先级大于setTimeout(fn, 0), 它会在事件循环的下一个时间点中触发任何其他 I/O 事件(包括定时器)之前运行 -
uptime()=>Integer返回当前
Node.js进程运行时间秒长, 包含秒的分数, 需要使用Math.floor()来得到整秒钟 -
version=>String返回当前
Node.js的版本信息 -
versions=>ObjectNode.js和其依赖的版本信息{ http_parser: '2.7.0', node: '8.9.0', v8: '6.3.292.48-node.6', uv: '1.18.0', zlib: '1.2.11', ares: '1.13.0', modules: '60', nghttp2: '1.29.0', napi: '2', openssl: '1.0.2n', icu: '60.1', unicode: '10.0', cldr: '32.0', tz: '2016b' } -
stdin=>Stream返回连接到
stdin(fd0) 的流。 它是一个net.Socket流(也就是双工流),除非 fd0指向一个文件,在这种情况下它是一个可读流process.stdin.setEncoding('utf8'); process.stdin.on('readable', () => { const chunk = process.stdin.read(); if (chunk !== null) { process.stdout.write(`数据: ${chunk}`); } }); process.stdin.on('end', () => { process.stdout.write('结束'); }); -
stdout=>Stream返回连接到
stdout(fd1) 的流。 它是一个net.Socket流(也就是双工流),除非 fd1指向一个文件,在这种情况下它是一个可写流process.stdin.pipe(process.stdout); -
stderr=>Stream返回连接到
stderr(fd2) 的流。 它是一个net.Socket流(也就是双工流),除非 fd2指向一个文件,在这种情况下它是一个可写流