NodeJs-Globals

 后端   小卒子   2024-09-03 22:01   171
  nodejs

在 Node.js 中,Globals 是全局可用的对象和函数,这意味着你可以在任何模块中使用它们,而不需要通过 require() 语句引入。以下是 Node.js 全局对象及其相关属性和方法的详细介绍:

1. __dirname__filename

  • __dirname: 返回当前模块文件所在的目录的绝对路径。
    console.log(__dirname); // 输出:当前文件所在的目录路径
    
  • __filename: 返回当前模块文件的绝对路径。
    console.log(__filename); // 输出:当前文件的绝对路径
    

2. console

Node.js 的 console 对象提供了一组简单的打印方法来输出到标准输出和标准错误。

  • console.log([data][, ...args]): 用于输出信息到标准输出(stdout)。
    console.log("Hello, World!"); // 输出:Hello, World!
    
  • console.error([data][, ...args]): 用于输出错误信息到标准错误(stderr)。
    console.error("An error occurred!"); // 输出错误信息
    
  • console.warn([data][, ...args]): 类似于 console.error,用于输出警告信息。
  • console.info([data][, ...args]): 类似于 console.log,用于输出普通信息。
  • console.dir(obj[, options]): 输出一个对象的属性,并可以指定选项(如是否显示隐藏属性)。
    console.dir({ name: "Alice", age: 25 }, { colors: true });
    
  • console.time(label)console.timeEnd(label): 用于计时操作,常用于性能分析。
    console.time("loop");
    for (let i = 0; i < 1000000; i++) {}
    console.timeEnd("loop"); // 输出运行时间
    

3. process

process 是一个全局对象,提供有关当前 Node.js 进程的信息和控制。

  • process.argv: 返回一个数组,包含启动 Node.js 进程时传入的命令行参数。
    console.log(process.argv); // 输出命令行参数列表
    
  • process.env: 返回一个包含用户环境信息的对象。
    console.log(process.env.PATH); // 输出 PATH 环境变量
    
  • process.exit([code]): 退出当前进程。可选的 code 参数是退出码,默认为 0。
    process.exit(1); // 退出进程并返回 1 作为退出码
    
  • process.cwd(): 返回当前工作目录。
    console.log(process.cwd()); // 输出当前工作目录
    
  • process.memoryUsage(): 返回一个对象,包含 Node.js 进程的内存使用情况。
    console.log(process.memoryUsage()); // 输出内存使用情况
    
  • process.nextTick(callback): 在事件循环的下一个周期中调用 callback
    process.nextTick(() => {
      console.log("This will run in the next event loop cycle");
    });
    

4. global

global 对象是一个 Node.js 全局对象,所有模块都可以访问。定义在 global 对象上的任何内容都可以被任何模块访问。

  • global.setTimeout(callback, delay[, ...args]): 定时执行回调函数。
    global.setTimeout(() => {
      console.log("Executed after 2 seconds");
    }, 2000);
    
  • global.setInterval(callback, delay[, ...args]): 定期执行回调函数。
    global.setInterval(() => {
      console.log("Executed every 2 seconds");
    }, 2000);
    
  • global.clearTimeout(timeoutObject): 停止通过 setTimeout() 创建的计时器。
  • global.clearInterval(intervalObject): 停止通过 setInterval() 创建的计时器。

5. moduleexports

  • module: 表示当前模块。通过 module.exports 可以导出模块的内容。
  • exports: 是一个快捷方式,等同于 module.exports。初始值是一个空对象 {},用于导出模块内容。
// example.js
module.exports.sayHello = function () {
  console.log("Hello, World!");
};

// main.js
const example = require('./example');
example.sayHello(); // 输出:Hello, World!

6. require()

require() 是一个用于引入模块的函数,允许你加载 Node.js 内置模块、第三方模块或自定义模块。

const fs = require('fs'); // 引入文件系统模块
const customModule = require('./customModule'); // 引入自定义模块

7. Buffer

Buffer 是用于处理二进制数据的类,允许在不需要单独使用数据流的情况下操作文件或数据。

  • 创建 Buffer 实例:
    const buf = Buffer.from('Hello World'); // 通过字符串创建 Buffer
    console.log(buf.toString()); // 输出:Hello World
    

8. setImmediate()

setImmediate() 是一种特殊的计时器,用于在事件循环的当前周期结束时执行代码。它比 setTimeout 更有效率,因为它不需要等待时间。

setImmediate(() => {
  console.log("This runs immediately after I/O events");
});

9. clearImmediate()

clearImmediate() 用于停止由 setImmediate() 创建的立即执行。

const immediate = setImmediate(() => {
  console.log("This will not run");
});
clearImmediate(immediate);

10. queueMicrotask()

queueMicrotask() 方法允许你将一个函数添加到 JavaScript 微任务队列中。微任务在事件循环的每一个阶段之间运行。

queueMicrotask(() => {
  console.log("This will run after the current script but before any other I/O events");
});

11. TextEncoderTextDecoder

TextEncoderTextDecoder 是用于处理文本编码和解码的全局类,特别是处理 UTF-8 编码。

  • TextEncoder:
    const encoder = new TextEncoder();
    const uint8Array = encoder.encode('Hello World');
    console.log(uint8Array); // 输出:Uint8Array([...])
    
  • TextDecoder:
    const decoder = new TextDecoder('utf-8');
    const text = decoder.decode(uint8Array);
    console.log(text); // 输出:Hello World
    

总结

Node.js 提供了丰富的全局对象和方法,可以帮助你在各种情况下快速编写代码。通过了解和使用这些全局对象和方法,你可以更高效地进行 Node.js 开发。