zoukankan      html  css  js  c++  java
  • node 中的global对象和process对象

    官方文档:http://nodejs.cn/api/

    因为Node.js是运行在服务区端的JavaScript环境,服务器程序和浏览器程序相比,最大的特点是没有浏览器的安全限制了,而且,服务器程序必须能接收网络请求,读写文件,处理二进制内容,所以,Node.js内置的常用模块就是为了实现基本的服务器功能。这些模块在浏览器环境中是无法被执行的,因为它们的底层代码是用C/C++在Node.js运行环境中实现的。

    global

    在前面的JavaScript课程中,我们已经知道,JavaScript有且仅有一个全局对象,在浏览器中,叫window对象。而在Node.js环境中,也有唯一的全局对象,但不叫window,而叫global,这个对象的属性和方法也和浏览器环境的window不同。进入Node.js交互环境,可以直接输入:

    > global.console
    Console {
      log: [Function: bound ],
      info: [Function: bound ],
      warn: [Function: bound ],
      error: [Function: bound ],
      dir: [Function: bound ],
      time: [Function: bound ],
      timeEnd: [Function: bound ],
      trace: [Function: bound trace],
      assert: [Function: bound ],
      Console: [Function: Console] }

    process

    process也是Node.js提供的一个对象,它代表当前Node.js进程。通过process对象可以拿到许多有用信息:

    > process === global.process;
    true
    > process.version;
    'v5.2.0'
    > process.platform;
    'darwin'
    > process.arch;
    'x64'
    > process.cwd(); //返回当前工作目录
    '/Users/michael'
    > process.chdir('/private/tmp'); // 切换当前工作目录
    undefined
    > process.cwd();
    '/private/tmp'

    JavaScript程序是由事件驱动执行的单线程模型,Node.js也不例外。Node.js不断执行响应事件的JavaScript函数,直到没有任何响应事件的函数可以执行时,Node.js就退出了。

    如果我们想要在下一次事件响应中执行代码,可以调用process.nextTick()

    // test.js
    
    // process.nextTick()将在下一轮事件循环中调用:
    process.nextTick(function () {
        console.log('nextTick callback!');
    });
    console.log('nextTick was set!');

    用Node执行上面的代码node test.js,你会看到,打印输出是:

    nextTick was set!
    nextTick callback!

    这说明传入process.nextTick()的函数不是立刻执行,而是要等到下一次事件循环。

    Node.js进程本身的事件就由process对象来处理。如果我们响应exit事件,就可以在程序即将退出时执行某个回调函数:

    // 程序即将退出时的回调函数:
    process.on('exit', function (code) {
        console.log('about to exit with code: ' + code);
    });

    判断JavaScript执行环境

    有很多JavaScript代码既能在浏览器中执行,也能在Node环境执行,但有些时候,程序本身需要判断自己到底是在什么环境下执行的,常用的方式就是根据浏览器和Node环境提供的全局变量名称来判断:

    if (typeof(window) === 'undefined') {
        console.log('node.js');
    } else {
        console.log('browser');
    }
  • 相关阅读:
    ruby 中的respond_to (转)
    outlook最小化到托盘的设置方法
    FCKeditor 在VS2008下的用法
    暴风影音2009开机启动关闭方法
    构建自己的不可替代性
    MySQL安装1045错解决办法(绝对经典)
    如何学好C++,用好类库很重要
    转:什么是重构
    转:C++堆与栈的区别
    SQL Server 中的索引
  • 原文地址:https://www.cnblogs.com/fqh123/p/10992940.html
Copyright © 2011-2022 走看看