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

本文探讨了Webpack如何通过唯一标识管理模块加载,确保不同组件间共享同一实例。通过具体示例说明了当一个类实例被导出并在多个组件中使用时,这些组件能够访问到相同的数据状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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对象是同一个对象。

### 配置 VSCode 中 Vue 项目的多 `.vue` 文件支持 为了在 Visual Studio Code (VSCode) 中为 Vue 项目配置同一文件下的多个 `.vue` 文件的支持,可以按照以下方法操作: #### 使用 `shim.d.ts` 声明模块 通过创建一个全局声明文件来帮助 TypeScript 或其他工具识别 `.vue` 文件。通常会在项目根目录下新建或编辑现有的 `shim.d.ts` 文件,并加入如下内容[^2]: ```typescript declare module "*.vue" { import { DefineComponent } from "vue"; const component: DefineComponent<{}, {}, any>; export default component; } ``` 此设置允许开发环境中的编译器理解并处理 `.vue` 扩展名的组件。 #### 推荐使用 Babel 的统一配置方式 对于 Vue CLI 创建的项目,默认推荐采用 `babel.config.js` 来替代传统的 `.babelrc` 或者 `package.json` 中的 `babel` 字段作为 Babel 的配置文件。这种方式能够更一致地应用到整个项目及其依赖项上[^1]。因此,在配置过程中需确保存在有效的 `babel.config.js` 并正确设置了预设和插件以兼容 Vue文件组件(SFC),例如: ```javascript module.exports = { presets: [ '@vue/cli-plugin-babel/preset' ] }; ``` #### 设置内置库提示功能 为了让开发者更容易查看 Node.js 核心模块(如 `path`, `fs` 等),可以在 VSCode 用户或工作区设置中启用显示构建库选项[^3]: ```json { "npm-intellisense.showBuildInLibs": true, "search.useGlobalIgnoreFiles": false } ``` 这一步虽然不直接影响 `.vue` 文件解析,但它提升了整体编码体验,特别是当涉及到服务器端渲染(SSR)或其他需要引入原生模块的情况时非常有用。 #### Docker 容器内的资源同步(可选) 如果项目运行在一个隔离环境中比如 Docker,则可能还需要考虑如何保持宿主机与容器之间必要的资源配置一致性。可以通过命令将容器里的关键数据导出至本地路径以便调试或者部署前验证[^4]: ```bash docker cp nginx:/etc/nginx/nginx.conf /usr/share/nginx/nginx.conf docker cp nginx:/etc/nginx/conf.d /usr/share/nginx/conf.d docker cp nginx:/usr/share/nginx/html /usr/share/nginx/ docker cp nginx:/var/log/nginx /usr/share/nginx/log ``` 以上步骤并非直接关联于解决题目所问的问题,但在某些特定场景下可能会间接影响最终效果呈现。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值