Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确保导入模块没有多个实例_Javascript_Node.js_Reactjs_React Native - Fatal编程技术网

Javascript 如何确保导入模块没有多个实例

Javascript 如何确保导入模块没有多个实例,javascript,node.js,reactjs,react-native,Javascript,Node.js,Reactjs,React Native,目前正在制作RN应用程序,我将把它与Google Analytics和Firebase集成。我将使用此模块: 我正在构建一个包装类/模块,该类/模块将与每个提供者联系,以便将来可以轻松地扩展自己的类/模块 我的结构如下(每个类扩展另一个类): 反应组件->基本组件->(具体实现)->屏幕组件 由于一个屏幕可以有多个组件,我将把分析包装器放在我的BaseComponent中,因此将有多个对我正在构建的分析模块的调用 我对这个来自Java开发的require/exports还是有点陌生,所以对我来说

目前正在制作RN应用程序,我将把它与Google Analytics和Firebase集成。我将使用此模块:

我正在构建一个包装类/模块,该类/模块将与每个提供者联系,以便将来可以轻松地扩展自己的类/模块

我的结构如下(每个类扩展另一个类): 反应组件->基本组件->(具体实现)->屏幕组件

由于一个屏幕可以有多个组件,我将把分析包装器放在我的BaseComponent中,因此将有多个对我正在构建的分析模块的调用

我对这个来自Java开发的require/exports还是有点陌生,所以对我来说,这个模块将有多个实例创建多个会话

我正在考虑将analytics包装器设置为一个全局对象,以确保设置代码只运行一次,并且会话保持不变


欢迎您的任何意见

nodejs native require和requirejs都会自动处理这个问题


注意,这是一把双刃剑——更改导入模块的属性也会在导入它们的所有其他脚本中更改它们,类似于更改Java静态属性。

nodejs native require和requirejs都会自动处理此问题


注意,这是一把双刃剑——更改导入模块的属性也会在所有其他导入它们的脚本中更改它们,类似于更改Java静态属性。

非常好。我只是想确认一下,这样我就可以把导入的模块看作是导入它们的所有文件中的共享代码。我认为这就像复制/粘贴到文件中一样,但我知道情况并非如此。除非你做一些疯狂的事情,比如使用完全不同的路径加载同一个模块,否则代码只会共享并加载一次。同样适用于es6
import
s。否,相同路径。实际上,它将由BaseComponent加载一次。我想我只需要确保在应用程序生命周期中只创建一次会话。非常好。我只是想确认一下,这样我就可以把导入的模块看作是导入它们的所有文件中的共享代码。我认为这就像复制/粘贴到文件中一样,但我知道情况并非如此。除非你做一些疯狂的事情,比如使用完全不同的路径加载同一个模块,否则代码只会共享并加载一次。同样适用于es6
import
s。否,相同路径。实际上,它将由BaseComponent加载一次。我想我只需要确保在应用程序生命周期中只创建一次会话。