← 返回首页
Nodejs基础教程(七)
发表时间:2020-04-22 21:51:37
讲解全局对象global.

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

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

>global.console

查看console对象的属性。

常见的全局对象和函数,如下表: |对象/函数|含义| |-|-| |__filename|表示当前正在执行的脚本的文件名。| |__dirname|表示当前执行脚本所在的目录。 |setTimeout(cb, ms)|指定的毫秒(ms)数后执行指定函数(cb)。:setTimeout() 只执行一次指定函数。| |setInterval(cb, ms)|指定的毫秒(ms)数后执行指定函数(cb)。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。| |clearTimeout(t)|清除一个之前通过 setTimeout() 创建的定时器| |console|用于提供控制台标准输出| |process|它用于描述当前Node.js 进程状态的对象,提供了一个与操作系统的简单接口。|

实例

function sayHello(){
    console.log( "Hello, Nodejs!");
}

// 输出全局变量 __filename 的值
console.log(__filename );
// 输出全局变量 __dirname 的值
console.log( __dirname );
// 两秒后执行以上函数
let timer = setTimeout(sayHello, 2000);
// 清除定时器
//clearTimeout(timer);
console.log(global.console);
// 输出到终端
process.stdout.write("Hello World!" + "\n");
// 通过参数读取
process.argv.forEach(function(val, index, array) {
    console.log(index + ': ' + val);
});
// 获取执行路径
console.log(process.execPath);
// 平台信息
console.log(process.platform);
// 输出当前进程编号
console.log('当前进程编号: ' + process.pid);

console.log(global.console===console);
console.log(global.process===process);

//判断JavaScript执行环境
if (typeof(window) === 'undefined') {
    console.log('服务器环境node.js');
} else {
    console.log('浏览器环境browser');
}

运行结果:

D:\vue_course\globaldemo\src\main.js
D:\vue_course\globaldemo\src
{
  log: [Function: bound consoleCall],
  warn: [Function: bound consoleCall],
  dir: [Function: bound consoleCall],
  time: [Function: bound consoleCall],
  timeEnd: [Function: bound consoleCall],
  timeLog: [Function: bound consoleCall],
  trace: [Function: bound consoleCall],
  assert: [Function: bound consoleCall],
  clear: [Function: bound consoleCall],
  count: [Function: bound consoleCall],
  countReset: [Function: bound consoleCall],
  group: [Function: bound consoleCall],
  groupEnd: [Function: bound consoleCall],
  table: [Function: bound consoleCall],
  debug: [Function: bound consoleCall],
  info: [Function: bound consoleCall],
  dirxml: [Function: bound consoleCall],
  error: [Function: bound consoleCall],
  groupCollapsed: [Function: bound consoleCall],
  Console: [Function: Console],
  profile: [Function: profile],
  profileEnd: [Function: profileEnd],
  timeStamp: [Function: timeStamp],
  context: [Function: context],
  [Symbol(kBindStreamsEager)]: [Function: bound ],
  [Symbol(kBindStreamsLazy)]: [Function: bound ],
  [Symbol(kBindProperties)]: [Function: bound ],
  [Symbol(kWriteToConsole)]: [Function: bound ],
  [Symbol(kGetInspectOptions)]: [Function: bound ],
  [Symbol(kFormatForStdout)]: [Function: bound ],
  [Symbol(kFormatForStderr)]: [Function: bound ]
}
Hello World!
0: C:\node-v12.13.0-win-x64\node.exe
1: D:\vue_course\globaldemo\src\main.js
C:\node-v12.13.0-win-x64\node.exe
win32
当前进程编号: 14560
true
true
服务器环境node.js
Hello, Nodejs!