当前位置: 首页 > 知识库问答 >
问题:

javascript - 请问在工程化项目中,不同组件内导入同一个模块,得到的导出对象是同一个对象吗?

闻人升
2023-09-24

如题,新增一个模块eventBus,例如:

export default new Vue()

现在我们有2个组件,分别是a.vue和b.vue,分别导入上面模块

import eventBus from './eventBus.js'

请问得到的eventBus对象是同一个吗?还是不同的2个对象?

共有3个答案

相德宇
2023-09-24

按照规范,是同一个。如果你想要不同的,可以自己想办法实现函数。

姚信鸥
2023-09-24

导入模块时执行的代码只会执行一次,并且被导出的对象实例会被缓存起来供后续导入使用。因此,每次导入相同的模块时,都会得到同一个被导出的对象实例

例如 :

文件 : axios.tsexport const axios = Axios.create({  // baseURL: });console.log('执行次数');

无论被多少文件 import 只会被执行一次;

你如果不觉得不正确 可以做个测试;
example : Example.ts

class Example {  time = Math.random() * 10;}export default new Example();

然后用其他文件导入Example.ts 然后打印 time是否是固定值即可。

田晨
2023-09-24

在工程化项目中,不同组件内导入同一个模块,得到的导出对象是否是同一个对象,取决于模块的导入方式和模块的导出方式。

对于你的具体例子,如果eventBus.js模块中使用了export default new Vue()导出一个新的Vue实例,那么在导入时,这个Vue实例会被单独创建。即使在不同的组件中导入这个模块,得到的也是不同的Vue实例。

这是因为使用export default导出的模块在每次导入时都会创建一个新的副本。这意味着如果你在多个组件中导入这个模块,你得到的将是多个独立的实例,而不是同一个实例。

例如,以下代码片段显示了导入的是同一个模块,但得到的export对象是不同的:

// eventBus.jsexport default new Vue()// a.vueimport eventBus from './eventBus.js'console.log(eventBus === eventBus) // 输出:false// b.vueimport eventBus from './eventBus.js'console.log(eventBus === eventBus) // 输出:false

在上述示例中,我们在a.vue和b.vue中都导入了eventBus模块,但得到的是两个完全独立的Vue实例。所以,eventBus === eventBus的结果是false。这意味着它们不是同一个对象。

 类似资料:
  • 如果我没有错的话,Thread-1和thread-3正在进入synchronized方法,因为它有两个不同的目标对象。但是为什么线程2进入同步块呢? 请帮助我理解这一点。提前谢了。

  • } 我有两个相同的对象,但是它们有不同的hashCode。为什么呢?我尝试覆盖Rational中的. equ方法r1.equals(r2)==true。但是它们仍然产生不同JavahashCode。

  • 问题内容: 我想知道如果在同一个对象上同步两次,在Java中是否会出现任何奇怪的行为? 场景如下 两种方法都使用该对象并对其进行同步。当第一个方法调用第二个方法时,它会被锁定而停止吗? 我不这么认为,因为它是同一个线程,但是我不确定是否可能会出现其他任何奇怪的结果。 问题答案: 同步块使用 可重入 锁,这意味着如果线程已经持有该锁,则它可以重新获取它而不会出现问题。因此,您的代码将按预期工作。 请

  • 问题内容: var arrObj = [{a:1, b:2},{c:3, d:4},{e:5, f:6}]; 如何将其合并为一个obj? 问题答案: 如果您的环境支持,那么您可以像这样简洁地进行操作 ES5解决方案: 您可以使用这样的 此解决方案仅将的所有键及其值收集在中的每个对象中,最终将结果返回给我们。 这张支票 有必要确保我们在结果中不包括所有继承的可枚举属性。

  • 我试图理解java中同步块的概念。根据我读过的文档,我明白如果我们获取一个锁(使用实例变量的同步块),那么我们就不能在该类中的同一对象上获取同步锁。但是当我尝试实际使用以下片段时,我发现我的理解出了问题。 即我能够同时以两种不同的方法获取锁(同一实例变量上的同步块)。当线程启动时,它将转到run方法并无限期地等待,并且不会从同步块中出来。同时,如果我使用相同的线程调用stop方法,它会进入同步块并

  • 我正在尝试编写一个简单的应用程序,其中包含一个跟踪每个用户支付的款项的表和一个包含每个用户支付的总金额(所有付款的总和)的第二个表。目前,两个表都有相同的字段(firstName、lastName、金额),我已经将它们从同一个Java类映射到多个表,我无法将该类映射到多个表。对此有什么简单的解决方案吗?