zoukankan      html  css  js  c++  java
  • Node.js:全局对象

    概要:本篇博客主要介绍了node.js中的全局对象。

      在JavaScript中,通常window是全局对象,而node.js中的全局对象是global,所有全局变量(除了global本身之外)都是global对象的属性。如:consoleprocess

    1.全局对象与全局变量

      global最根本的作用是作为全局变量的宿主。满足以下条件:

      ●在最外层定义的变量;

      ● 全局对象的属性;

      ● 隐式定义的变量(未定义直接赋值的变量)。

    2.process

      process是一个全局变量,即global对象的属性。它用于描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口。下面介绍一些process对象的一些最常用的成员方法。

       process.argv:命令行参数数组,第一个元素是node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。

    console.log(process.argv);

      将以上代码存储为argv.js,通过以下命令行运行:

    $ node argv.js 1991 name=byvoid --v "Carbo Kuo"
    [   
        'node',
        '/home/byvoid/argv.js',
        '1991',
        'name=byvoid',
        '--v',
        'Carbo Kuo'
    ]

       process.stdout:标准输出流,通常我们使用的console.log()向标准输出打印字符,而process.stdout.write()函数提供了更底层的接口。

       process.stdin:标准输入流,初始时它是被暂停的,想要从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。

    process.stdin.resume();
    
    process.stdin.on('data',function(data){
        process.stdout.write('read from console: ' + data.toString());    
    });

      ▲ process.nextTick(callback):为事件循环设置一项任务,Node.js会在下次事件循环调响应时调用callback。

      Node.js进程只有一个线程,因此在任何时刻都只有一个事件在执行。如果这个事件占用大量的CPU时间。process.nextTick()提供了一个这样的工具,可以把复杂的工作拆散,变成一个较小的事件。

    function doSomething(args , callback){
        somethingComplicated(args);
        callback();
    }
    
    doSomething (function onEnd(){
        compute();
    })

      我们假设,compute()和somethingComplicated()是两个较为耗时的函数,以上的程序在调用doSomething()时会先执行somethingComplicated(),然后立即调用回调函数,在onEnd()中又会执行compute()。下面用process.nextTick()改写上面的程序:

    function doSomething(args,callback) {
        somethingComplicated(args);
        process.nextTick(callback);
    }
    
    doSomething(function onEnd(){
        compute();
    })

      改写的程序会把上面耗时的操作拆分成两个事件,减少每个事件的执行时间,提高事件响应速度。

      警告:不要使用setTimeout(fn,0)代替process.nextTick(callback),前者比后者效率要低得多。除此之外process还展示了process.platform、process.pid、process.execPath、process.memoryUsage()等方法,以及POSIX进程信号响应机制。

    3.console

      console用于提供控制台标准输出。

      ▲ console.log( ):向标准输出流打印字符并以换行符结束。console.log()接受若干个参数,如果只有一个参数,则输出这个参数的字符串形式。如果有多个参数,则以类似于C语言printf()命令的格式输出。第一个参数是字符串,如果没有参数,只打印一个换行。

    console.log('Hello world');
    console.log('byvoid%diovyb');
    console.log('byvoid%diovyb',1991);

    运行结果为:

      ▲ console.error( ):与console.log()用法相同,只是向标准错误流输出。

      ▲ console.trace( ):向标准错误流输出当前的调用栈。

    console.trace();

    运行结果为:

  • 相关阅读:
    视图,触发器,事物,储存过程,函数,流程控制
    mysql之其他
    web前端之html
    mysql之索引
    Android minHeight/Width,maxHeight/Width
    Android GridView(九宫图)
    Android padding和margin的区别
    android:scaleType属性
    android:visibility
    Android RelativeLayout常用属性介绍
  • 原文地址:https://www.cnblogs.com/koto/p/5694515.html
Copyright © 2011-2022 走看看