Vue中 js ts 文件被多个vue组件多次 import 后,文件中的对象是同一个对象还是多个对象

Posted 恒哥的爸爸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue中 js ts 文件被多个vue组件多次 import 后,文件中的对象是同一个对象还是多个对象相关的知识,希望对你有一定的参考价值。

webpack会对每个文件定义一个id,这个id是唯一的。在import的时候,会先查找一遍文件对应的id,如果未加载,将进行加载。在加载时,就会执行内部的函数。所以,可知,如果导出的是实例化函数对象,那么,这个对象将是同一个对象,如果是函数对象,外部组件也可以实例化当前作用域的对象。

QualityControlParamManager.ts文件
-------------------------------------------
class QualityControlParamManager{
    public globalVal:number = 1;
    public constructor(){
        console.log("--- quality control parameter configuration ---")
    }
}
var qualityControlParamManager =  new QualityControlParamManager();
export default qualityControlParamManager;




QualityContorlTask.vue
-------------------------------------
import globalParamManager from "./QualityControlParamManager"

export default {
    created:{
        globalParamManager.globalVal = 10
        console.log("====val==="+globalParamManager.globalVal)
    }
}



QualityContorl.vue
-------------------------------------
import globalParamManager from "./QualityControlParamManager"

export default {
    created:{
        console.log("====val==="+globalParamManager.globalVal)
    }
}

以上两个页面,QualityContorlTask.vue页面组件显示后,后续路由到页面组件QualityContorl.vue,globalVal的值是10。所以,可知两个组件中导入的globalParamManager对象是同一个对象。

以上是关于Vue中 js ts 文件被多个vue组件多次 import 后,文件中的对象是同一个对象还是多个对象的主要内容,如果未能解决你的问题,请参考以下文章

ts+vue3+vite+pinia+vue-router 踩坑合集

为用 Typescript 编写的 Vue 组件生成 d.ts 文件

vue中bus.$on事件被多次绑定

在 Vue 中将对象属性与子组件同步

Vue3_03(Vite目录 & Vue单文件组件)

vue中bus.$on事件被多次绑定