javascript - 使用全局实例导入模块

标签 javascript typescript es6-modules

我正在查看这个 react/flux 示例,这个人正在这样的一个文件中创建一个调度程序实例:

// https://github.com/learncodeacademy/react-js-tutorials/blob/master/3-flux/src/js/dispatcher.js
import { Dispatcher } from "flux";
export default new Dispatcher;

然后通过导入在多个其他文件中使用它。然而,这是让我感到不舒服的部分,他在每个单独的文件中都使用它,就好像它们都是同一个实例一样。

import dispatcher from "../dispatcher";
dispatcher.dispatch({type: "event"});

一个单独的文件:

import dispatcher from "../dispatcher";
dispatcher.register(...);

我觉得这对他有用,因为他使用 webpack 将所有导入合并到一个文件中。但是,如果我想将我的文件分开怎么办?这是否仍然有效,或者我是否需要执行其他操作才能从多个文件访问同一个调度程序?

最佳答案

一旦 Webpack 模块系统解决了依赖关系,也就是说,一旦评估了模块的“导出”,它们就会被缓存。无论有多少模块“导入”这些依赖项。

意思是这段代码:

export default new Dispatcher;

...在程序的整个生命周期中只被评估一次。

Webpack 的功能与 Node.js 本身的功能完全相同。模块仅被评估一次。

关于javascript - 使用全局实例导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337312/

相关文章:

javascript - 是否可以在单个语句中从另一个模块导出 * 和默认值?

javascript - 导入类中未定义的属性

javascript - 在jsp中运行javascript函数

javascript - JQuery 数字格式

reactjs - react native typescript 屏幕测试返回测试套件运行失败。错误 react-native-permissions : NativeModule. RNPermissions 为空

typescript - Angular2 如何解析导入?

Javascript 粘性导航滚动条

javascript - 包 react-native-onesignal 已被忽略,因为它包含无效配置

Angular 4 - Http 请求错误 : You provided 'undefined' where a stream was expected

javascript - 在导出的同一文件中使用导出的函数