node 中的global对象和process对象

因为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‘);
}

原文地址:https://www.cnblogs.com/fqh123/p/10992940.html

时间: 2024-10-12 09:19:15

node 中的global对象和process对象的相关文章

Node.js API —— Global Objects(全局对象)

// 说明 Node API 版本为 v0.10.31.    中文参考:http://blog.sina.com.cn/oleoneoy 本段为博主注解. 目录 ● 全局对象    ○ global    ○ process    ○ console    ○ Class: Buffer    ○ require()        ■ require.resolve()         ■ require.cache        ■ require.extensions    ○ __fil

node中__dirname、__filename、process.cwd()、process.chdir()表示的路径

直接上结论:__dirname 表示当前文件所在的目录的绝对路径__filename 表示当前文件的绝对路径module.filename ==== __filename 等价process.cwd() 返回运行当前脚本的工作目录的路径process.chdir() 改变工作目录 例子,文件路径有如下结构:newapp > demo > hello.js 在hello.js文件中编写如下代码: console.log(__dirname);console.log(__filename);con

Java虚拟机读写其他进程的数据--Process对象

使用Runtime对象的exec()方法可以运行平台上的其他程序,该方法产生一个Process对象,Process对象代表由该Java程序启动的子进程. Process类提供了3个方法,用于让程序和其子进程通信 InputStream getErrorStream():获取子进程的错误流. InputStream getInputSteeam():获取子进程的输入流. OutputStream getOutputStream():获取子进程的输出流. 范例:读取其他进程的输出信息 package

Node中的全局变量和全局对象

全局对象和全局变量 概念:所有属性都可以在程序的任何地方访问,即全局变量.在JavaScript中,通常window是全局对象,而Node.js的全局对象是global,所有全局变量都是global对象的属性,如:console.process等. global最根本的作用是作为全局变量的宿主,满足一下条件称为全局变量 1. 在最外层定义的变量 2. 全局对象的属性 3. 隐式定义的变量 ▲ 在node中不可能在最外层定义变量,因为所有的用户代码都是属于当前模块的,而模块本身是不属于最外层上下文

JS中的Global对象

Global对象可以说是ECMAScript中最特别的一个对象了.因为不管你从什么角度上看,这个对象都是不存在的.ECMAScript中的Global对象在某种意义上是作为一个终极的"兜底儿对象"来定义的.换句话说,不属于任何其他对象的属性和方法,最终都是它的属性和方法.事实上,没有全局变量或全局函数:所有在全局作用域中定义的属性和函数,都是Global对象的属性.本书前面介绍过的那些函数,诸如 isNaN().isFinite().paseInt()以及parseFloat(),实际

Node中的全局对象和全局变量

这个文章主要是对上一个文章的扩充 util对象 在Node环境已经安装好的前提下,使用util中已经定义的方法,只需要require('util')即可: uti是utility(功效,用途)的缩写.这util模块的设计主要是为了满足Node内部API的需求.下面来介绍两个比较重要的: 1.inherits 这个方法实现了原型链之间的继承(即JavaScript的继承) var util = require('util'); function base(){ this.name = 'helio

node.js常用的全局成员和对象

一般可以直接调用的对象,我们称之为全局对象: 一下对象都加了console.log(),以在运行环境中的显示效果为标准 //包含文件名称的全路径:    console.log(_filename); //文件的路径 (不包含文件名):    console.log(_dirname); //定时函数: var time = setTimeout(function(){ console.log("hi"); },1000); clearTimeout(time);           

NodeJS入门(五)—— process对象

process对象用于处理与当前进程相关的事情,它是一个全局对象,可以在任何地方直接访问到它而无需引入额外模块. 它是 EventEmitter 的一个实例. 本章的示例可以从我的Github上下载到(敏感时期GFW发大招,git暂时传不了,等多几天风头过了再试着上传). 事件'exit' 当进程将要退出时触发.这是一个在固定时间检查模块状态(如单元测试)的好时机.需要注意的是 'exit' 的回调结束后,主事件循环将不再运行,所以计时器也会失效: process.on('exit', func

nodejs学习三 process对象

rocess对象,我说的是对象.这个对象包含的方法和属性非常的多,它向我们打开了一个通往Node.js的大门,让我们队Node.js有更多的了解. 你知道安装的Node.js的版本吗? 你知道你的Node安装在上面平台下吗? 你知道你的Node可执行文件的绝对路径吗? 你想得到你env环境变量内容吗? 上面输入的信息你可以更具体点,比如console.log(process.env.OS) 你想得到命令行上的参数吗? 好了,下面我们来写一个js.命名process.js 在命令行上运行它: 我们