导入模块与全局实例

时间:2016-12-26 23:37:27

标签: 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将所有导入组合到一个文件中,所以它对他有用是有道理的。但是,如果我想保持文件分开怎么办?这仍然有用,还是我需要做其他事情来从多个文件访问同一个调度程序?

1 个答案:

答案 0 :(得分:1)

一旦Webpack模块系统解析了依赖关系,即一旦"导出"对模块进行评估,它们被缓存。无论有多少模块" import"那些依赖。

意思是这段代码:

export default new Dispatcher;

...仅在整个程序的生命周期中进行一次评估。

Webpack正是Node.js本身所做的。模块只评估一次。