Node.js 中定义了一系列全局对象(有的只能在模块作用域中使用)。

全局对象

console

和浏览器调试工具中的 console 类似。

console.log('前端开发');

global

全局命名空间,通过 global 定义的变量,在任何地方都可以使用,类似于浏览器端定义在全局范围中的变量。

// foo.js
global.foo = 'node.js 开发';
// bar.js
require('./foo');
console.log(global.foo);

定义在 global 上面的变量,不需要在模块中通过 exports 输出,其他模块中也能使用。

module

对当前模块的一个引用,通常 module.exports 用于输出模块中的想要公开的接口(变量),然后其他模块可以通过 require() 获取公开的接口(变量)。

exports

exports 是对 module.exports 的一个引用,exports 只能在模块中使用。

process

进程对象。

全局函数

Class: Buffer

用于处理二进制数据(binary data)。

require()

用于加载模块,require 只能在模块中使用。

// 载入文件系统模块
let fs = require('fs');

定时器

与定时器相关的都是全局函数,比如:setTimeout(cb, ms)、setInterval(cb, ms)、clearTimeout(t) 和 clearInterval(t) 等。用法和 JavaScript 中一样。

全局变量

__dirname

dirname 实际上不是一个全局变量,在命令行模式下直接调用会提示dirname 未定义,但是在模块中可以直接使用,返回当前脚本执行的目录。

console.log('__dirname');

__filename

返回当前执行代码文件的名称(包含文件的绝对路径)。和dirname 一样,filename 也不是一个全局变量,但在模块中可以直接使用。

// /home/w3clog/test.js
console.log(__filename); // /home/w3clog/test.js