全局对象
在 Node.js 中,全局对象是指那些无需显式导入即可在整个程序中直接访问的对象。这些对象提供了对环境、标准库和其他实用功能的访问。以下是一些常见的 Node.js 全局对象:
1. global
这是所有全局变量的容器。在浏览器环境中,全局对象是 window 或 self,但在 Node.js 中它是 global。任何附加到这个对象上的属性都可以在程序的任何地方作为全局变量使用。
javascript
global.myVar = "Hello World";
console.log(myVar); // 输出: Hello World2. process
提供了一个接口来与当前 Node.js 进程交互。你可以获取命令行参数、环境变量、退出进程等。
process.argv:命令行参数数组。process.env:环境变量对象。process.exit([code]):退出当前进程,可选地传入一个状态码。process.version:Node.js 版本字符串。process.cwd():返回当前工作目录(命令行执行时的目录)。process.platform:返回当前操作系统平台。process.pid:当前进程的 PID。process.kill[PID]: 删除进程。
3. Buffer 类型化数组
用于处理二进制数据。虽然它不是严格意义上的全局对象,但它可以在不引入的情况下直接使用。
javascript
const buf = Buffer.from("example");4. __filename 和 __dirname
这两个属性分别表示当前文件的完整路径和所在目录的完整路径。
javascript
console.log(__filename); // 当前文件的绝对路径
console.log(__dirname); // 当前文件所在的目录的绝对路径5. require
用来加载模块。你不仅可以使用它来加载内置模块(如 fs, http),还可以加载第三方模块或自定义模块。
javascript
const fs = require("fs");6. module 和 exports
module 是当前模块的引用,而 exports 是从模块导出的对象。通过修改 module.exports,你可以完全替换默认的导出对象。
javascript
// 在模块内部
module.exports = {
/* ... */
};
// 或者
exports.someFunction = function () {
/* ... */
};7. setTimeout、 setInterval、setImmediate
类似于浏览器中的定时器函数,但它们实际上是 Node.js 的核心模块提供的功能。setInterval 和 clearInterval 同样可用。
javascript
setTimeout(() => {
console.log("This will run after 1 second");
}, 1000);8. console
提供了一系列用于输出信息的方法,如 console.log, console.error, console.warn 等。
javascript
console.log("Logging information");9. Error
用于创建错误对象,并且可以通过抛出异常来处理程序中的错误情况。
javascript
throw new Error("Something went wrong!");以上只是 Node.js 中一部分全局对象的例子。每个版本的 Node.js 可能会添加新的全局对象或者对现有对象进行改进。