process基础

219 阅读1分钟

//process 进程
//Buffer  类型来处理二进制的
//clearInterval   setTimeout
//clearImmediate setImmediate

//process  默认会在golbal中查找(node中有一个模块化系统,十一文件为单位的,每个文件都是一个模块,模块中的this被跟改了 this={})
//global.process  === process
console.log(process)
//process.platform //可以判断当前执行的系统环境 win32 platform: 'darwin',

process.argv //是一个数组 第一个时node.exe存在的位置  第二个当前文件执行的位置 (解析用户自己传递的参数)
//执行node文件 node文件名 a b c d
//(commander TJ)  (yargs webpack) npm github
// 在npm上的模块都要安装

const program = require('commander').program 
program.version('1.0.0')
    //command命令 action回调
    .command('create').action(() => {
        console.log('创建项目')
    })
    //当前命令的名称
    .name('node')
    //
    .usage('my-server')
    //传参
    .option('-p,--port <v>','set you port')
    //解析
    .parse(process.argv)


    //当用户在那执行node命令时  就去那个文件下找配置文件 webpack
process.cwd() //用户当前工作的目录 current working directory(这个目录可以改)
__dirname //当前文件所在的目录  不能手动切换

process.env  //环境变量 可以根据环境变量实现不同的功能
// window 下 set key = value   mac 下 export key = value 设置零时环境变量
//例如 let domain = process.env.NODE_ENV === 'production'? 'localhost':'www.bao.com'


//node中自己增加的微任务
process.nextTick

//也是微任务
queueMicrotask(() => {

})

内存使用

 process.memoryUsage()

cpu 占用时间

process.cpuUsage()

运行环境:运行目录、node环境、cpu架构、用户环境、系统平台

process.cwd()
process.version
process.versions
process.arch
process.env.NODE_ENV
process.env.PATH
process.env.USERPROFILE  // HOME
process.platform

3 运行状态: 启动参数、PID、运行时间

process.argv
process.argv0  // execArgv
process.pid // ppid 
process.uptime()

4 事件

process.on('beforeExit',()=>{

})

process.on('exit',() => {
    //只能执行同步代码
})

process.exit() //结束进程

5 标准输出 输入 错误


    process.stdout.write('---')//输出

    process.stdin.pipe(process.stdout) //输入 pipe 给 输出

    process.stdin.setEncoding('utf-8')
    process.stdin.on('readable',() => {
        let chunk = process.stdin.read()
        if(chunk != null) {
            process.stdout.write('data' + chunk)
        }
    })