使用全局实例导入模块
import module with global instance
我正在看这个 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 模块系统解析了依赖关系,也就是说,一旦评估了模块的 "exports",它们就会被缓存。不管模块有多少"import"那些依赖。
意思就是这段代码:
export default new Dispatcher;
...在程序的整个生命周期中只评估一次。
Webpack 所做的正是 Node.js 本身所做的。模块只评估一次。
我正在看这个 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 模块系统解析了依赖关系,也就是说,一旦评估了模块的 "exports",它们就会被缓存。不管模块有多少"import"那些依赖。
意思就是这段代码:
export default new Dispatcher;
...在程序的整个生命周期中只评估一次。
Webpack 所做的正是 Node.js 本身所做的。模块只评估一次。