首页 > 解决方案 > 在浏览器 + Node 中,模块的范围是什么?

问题描述

我想知道模块在浏览器和 Node.js 中的范围是什么。我特别想了解一个模块级变量是为每个应用程序创建一次,还是多次创建。是在每次导入时创建模块的新实例,还是在所有导入中共享完全相同的模块?非常感谢!

标签: javascriptnode.jsecmascript-6node-modulesecma

解决方案


有几种 JS 模块风格 - ESM、CommonJS、AMD。它们的共同特点是它们在第一次导入时被评估一次,至少在正常情况下是这样。做相反的事情会使他们共享数据的效率低下。

导出类实例是在应用程序中共享一个实例而不使类成为单例的常用方法。

可以使模块被多次评估(有意或无意)的方法包括拥有多个模块副本,在不区分大小写的系统中导入不同的文件名大小写,修改节点模块缓存。


推荐阅读