Node.js - 全域物件

Hello, aspiring programmers! Today, we're going to dive into the exciting world of Node.js Global Objects. As your friendly neighborhood computer science teacher, I'm thrilled to guide you through this journey. Don't worry if you're new to programming – we'll start from the basics and work our way up. So, grab your favorite beverage, get comfortable, and let's begin!

Node.js - Global Objects

甚麼是全域物件?

Before we jump into the specifics, let's understand what global objects are. Imagine you're in a big house (that's your Node.js environment), and there are some tools that you can use in any room without having to carry them around. These are like global objects – they're always available for you to use in your Node.js programs, no matter where you are in your code.

Buffer class

Let's start with the Buffer class. Think of a buffer as a temporary storage space for data, kind of like a bucket that holds water.

創建 Buffer

const buf1 = Buffer.alloc(10);
console.log(buf1); // Output: <Buffer 00 00 00 00 00 00 00 00 00 00>

const buf2 = Buffer.from('Hello, Node.js!');
console.log(buf2.toString()); // Output: Hello, Node.js!

在這個例子中,buf1 就像是一个可以容纳10个数据单位的空桶。buf2 是从字符串创建的,我们可以使用 toString() 将其转换回字符串。

使用 Buffers

const buf = Buffer.alloc(4);
buf.write('Hey!');
console.log(buf.toString()); // Output: Hey!

buf[1] = 111; // ASCII code for 'o'
console.log(buf.toString()); // Output: Hoy!

在这里,我们在缓冲区中写入数据,甚至更改了单个字节。这就像在不同的部分绘制你的桶!

Console class

The Console class is your trusty sidekick for debugging and logging information.

console.log('Hello, World!'); // Prints: Hello, World!
console.error('Oops, something went wrong!'); // Prints error in red
console.warn('Be careful!'); // Prints warning in yellow

console.time('Loop time');
for(let i = 0; i < 1000000; i++) {}
console.timeEnd('Loop time'); // Prints: Loop time: 2.845ms

这些方法帮助你理解代码中发生的事情。这就像和你的程序进行对话!

Process object

The Process object is your window to the Node.js environment and the current process.

console.log(`Node.js version: ${process.version}`);
console.log(`Current directory: ${process.cwd()}`);

process.on('exit', (code) => {
console.log(`About to exit with code: ${code}`);
});

process.exit(0);

这个对象让你可以与当前的 Node.js 进程交互。这就像为你的程序拥有一个控制面板!

全域定时函数

Node.js 提供了几个用于调度代码执行的功能。让我们看看几个:

setTimeout(() => {
console.log('This runs after 2 seconds');
}, 2000);

setInterval(() => {
console.log('This runs every 3 seconds');
}, 3000);

setImmediate(() => {
console.log('This runs as soon as possible');
});

这些函数就像为你的代码设置闹钟或提醒,以便稍后执行某些操作。

全域变量

Node.js 提供了一些始终可用的全局变量:

console.log(__dirname); // Prints the directory name of the current module
console.log(__filename); // Prints the file name of the current module
console.log(module); // Reference to the current module
console.log(exports); // Reference to the module.exports object
console.log(require); // Function to include modules

这些变量为你提供了关于当前文件和模块的信息。它们就像代码的 GPS 坐标!

其他全域物件

以下是一些 Node.js 中的其他重要全局对象的表格:

物件 描述
global 全局命名空间对象
process 提供关于当前 Node.js 进程的信息和控制
console 用于打印到 stdout 和 stderr
Buffer 用于处理二进制数据
setTimeout(), clearTimeout(), setInterval(), clearInterval() 定时功能
setImmediate(), clearImmediate() 用于调度“立即”执行回调

记住,这些对象在你的 Node.js 环境中始终可用,随时准备帮助你构建出色的应用程序!

总之,Node.js 的全局对象是让程序员生活更轻松的强大工具。它们就像你口袋里的瑞士军刀——在你需要的时候总是在那里。随着你在 Node.js 旅程的继续,你会发现你会越来越多地使用这些对象。

我希望这个教程对您有所帮助,也很有趣。请记住,编程是一个旅程,你写的每一行代码都是向前迈出的一步。继续练习,保持好奇心,最重要的是,享受乐趣!祝未来 Node.js 忍者编程愉快!

Credits: Image by storyset