Node.js takes the V8 engine (the same one that powers Chrome) and adds APIs for files, networking, processes and more, so JavaScript can run as a server or CLI tool instead of only inside a browser tab.
Because it has no DOM, Node exposes its own globals: `process`, `Buffer`, `__dirname`/`__filename` (in CommonJS), and module systems (`require`/`module.exports` or ESM `import`/`export`).
js console.log(process.version); console.log(typeof window); // "undefined" — no browser globals
Node is single-threaded for your JS code but delegates I/O (disk, network, DNS) to a libuv thread pool and the OS, which is why it can serve many concurrent connections without spawning a thread per request. This makes it a natural fit for building the backend services — indexers, APIs, RPC proxies — that sit behind a dApp.