为什么这在 NodeJS 中充当单例

Why does this act as a singleton in NodeJS

为什么这在NodeJS中充当单例,它是如何工作的?

const io = require('socket.io')();

const singleton = module.exports = io;

本质上,如果我多次导入此文件,我会得到第一个实例化的 socket.io 实例。

模块按节点缓存。您正在返回一个实例,因此每当您 require 这个文件时,您每次都会得到相同的实例 (io)。行

const io = require('socket.io')();

只是 运行 第一次需要此模块。之后,任何需要这个模块的模块都只会得到返回的实例。

这里是关于缓存的官方文档:https://nodejs.org/api/modules.html#modules_caching