2.global 下的属性和方法

global 下的属性和方法

  • global
  • console
  • process
  • Buffer 缓存区(重点) 比如:文件读写都写在Buffer中
  • clearImmediate 清除立即
  • setImmediate 设置立即
  • clearInterval
  • setInterval
  • clearTimeout
  • setInterval

1.global

  • global.global.global可以循环使用,没有太多实际意义

2.console

  • console.log 打印日志
  • console.dir 不常用
  • console.warn 打印警告
  • console.error 打印错误
  • console.info 打印信息
  • console.time(标志)与console.timeEnd(标志)
    • console.time(标志)与console.timeEnd(标志)可以算出时差,比如下面的例子
    console.time('a');
    for(var i = 0;i<100;i++){
    
    }
    console.timeEnd('a');
    //虽然上面是两个console,但是打印只打印一个结果,为0.085ms
    

3.process 进程

  • process.argv 执行环境的参数

假设我执行文件传递参数为 a b c
js console.log(process.argv);//这就打印出一个数组 [ 'D:\\Develop\\nodejs\\node.exe', 'C:\\Users\\ywx502779\\Desktop\\architect 3\\architect\\6.node\\1.node.js', 'a', 'b', 'c' ]
假设我们需要传递参数port为3000,一般我们这么传递:

console.log(process.argv);//这就打印出一个数组
    [ 'D:\\Develop\\nodejs\\node.exe',
    'C:\\Users\\ywx502779\\Desktop\\architect 3\\architect\\6.node\\1.node.js',
    'a',
    '--port',
    '3000' ]

由于process.argv返回的数组前两项一般用不到,所以我们一般会如下操作(大多数情况下还是借助类似yargs等库来获取参数):

let obj = process.argv.slice(2).reduce((a,b,i,arr) => {
    if(b.includes("--")){
        a[b.slice(2)] = arr[i+1];
    }
    return a;
},{});
  • process.cwd() 当前执行目录(不含当前文件,到文件夹为止)
        console.log(process.cwd());//C:\Users\ywx502779\Desktop\architect 3\architect\6.node
    
  • process.env 执行的环境
    • 我们可以在process.env对象下加自己的变量
      • 比如:process.env.NODE_ENV
      • 在命令行里配置NODE_ENV
        • mac如何配置:export NODE_ENV=dev
        • windows如何配置:set NODE_ENV=dev
        • 这样process下的env下的NODE_ENV就有值了,为dev,那么就可以通过process.env.NODE_ENV获取到这个NODE_ENV的值了,然后可以判断是否为开发环境
      • 如果代码放到服务器上,那就没有此环境变量,取不到那就说明走线上环境
  • process.nextTick(() => {})
    • 代表下个队列
    • 参数放回调函数,异步的,里面的异步回调函数放到当前队列的底部执行
      • 比如下面的代码,先打印http://localhost:8888,再打印nextTick,因为打印nextTick的回调放到了队列的底部
      let url;
      if(process.env.NODE_ENV === 'dev'){
        url = 'http://localhost:8888'
      }else{
        url = 'http://www.yuhua.com'
      }
      
      process.nextTick(function(){
        console.log('nextTick');
      })
      
      console.log(url);//http://localhost:8888
      
    • 与setImmediate需要区别一下(面试点):
      • nextTick是在当前队列的地步,而setImmediate是在第二个队列,所以无论nextTick与setImmediate谁在前谁在后,一定是nextTick先执行
      setImmediate(function(){
        console.log('setImmediate') // 后执行
      })
      process.nextTick(function(){
        console.log('nextTick'); // 先执行
      })
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值