javascript - 在浏览器 + Node 中,模块的范围是什么?
问题描述
我想知道模块在浏览器和 Node.js 中的范围是什么。我特别想了解一个模块级变量是为每个应用程序创建一次,还是多次创建。是在每次导入时创建模块的新实例,还是在所有导入中共享完全相同的模块?非常感谢!
解决方案
有几种 JS 模块风格 - ESM、CommonJS、AMD。它们的共同特点是它们在第一次导入时被评估一次,至少在正常情况下是这样。做相反的事情会使他们共享数据的效率低下。
导出类实例是在应用程序中共享一个实例而不使类成为单例的常用方法。
可以使模块被多次评估(有意或无意)的方法包括拥有多个模块副本,在不区分大小写的系统中导入不同的文件名大小写,修改节点模块缓存。
推荐阅读
- python - tensorflow 对象检测 API 训练和导出图
- c - 将数据传递给函数时遇到问题
- webpack - 为什么使用 Webpack 时有时未定义窗口?
- angular - node_modules/rxjs/internal/types.d.ts(81,44): 错误 TS1005: ';' 安装 Angular 6 后的预期错误
- android - 后台服务在 android PIE 版本中无法正常工作
- amazon-web-services - 使用 S3 存储桶通过单一云端分发服务多个网站
- google-bigquery - 读取 Avro 文件并将其写入 BigQuery 表
- c - 2n 比例整数的 16 位加法
- hive - Hive- 使用 ROW_NUMBER() 删除重复行
- java - Appium 不显示 webview 上下文,它只显示本机应用程序上下文。如何获取 webview 上下文?