vue3中 全局变量在 js文件中引入 并使用

在 Vue 3 中,你可以通过创建一个自定义的 JavaScript 模块来定义全局变量,并在需要的地方导入这个模块。以下是一个简单的例子:

1.创建一个全局变量文件(例如 global-vars.js)

// global-vars.js
const globalVars = {
   
   
  API_URL: 'https://api.example.com',
  GLOBAL_FLAG: true
};
 
export default globalVars;

2.在 Vue 组件中导入这个全局变量模块并使用它:


                
### Vue3全局变量的定义、修改与使用 #### 方法一:通过 Vuex 实现全局状态管理 Vuex 是 Vue 的官方状态管理库,适用于复杂的项目场景。可以通过创建 store 来集中存储和管理应用中的数据。 1. **安装初始化 Vuex** 首先需要安装 `vuex` 配置到项目中。 ```bash npm install vuex@next --save ``` 2. **创建 Store 文件** 创建一个名为 `store.js` 的文件在其中定义初始状态和更改逻辑。 ```javascript import { createStore } from &#39;vuex&#39;; const store = createStore({ state() { return { globalVariable: &#39;Initial Value&#39; // 初始值 }; }, mutations: { updateGlobalVariable(state, newValue) { state.globalVariable = newValue; } }, actions: { changeGlobalVariable({ commit }, newValue) { commit(&#39;updateGlobalVariable&#39;, newValue); } } }); export default store; ``` 3. **引入 Store 至主程序** 在 `main.js` 或者入口文件中注册该 store。 ```javascript import { createApp } from &#39;vue&#39;; import App from &#39;./App.vue&#39;; import store from &#39;./store&#39;; const app = createApp(App); app.use(store).mount(&#39;#app&#39;); ``` 4. **访问和修改全局变量** 可以在组件内部通过 `$store.state` 和 `$store.commit` 访问或改变全局变量。 ```javascript this.$store.dispatch(&#39;changeGlobalVariable&#39;, &#39;New Value&#39;); // 修改操作[^1] console.log(this.$store.state.globalVariable); // 获取当前值 ``` --- #### 方法二:利用 provide/inject API 设置全局变量 Vue3 提供了新的组合式 API——`provide` 和 `inject`,可以直接传递父级作用域的数据给子组件而无需逐层传递 props。 1. **提供全局变量 (Provide)** 将全局变量注入至根实例,在 `App.vue` 中完成此过程。 ```javascript <script> import { ref, provide } from &#39;vue&#39;; export default { setup() { const globalVar = ref(&#39;Default Global Variable&#39;); function setGlobalValue(newValue) { globalVar.value = newValue; } provide(&#39;globalVar&#39;, globalVar); // 注入响应式的全局变量 provide(&#39;setGlobalValue&#39;, setGlobalValue); // 同时注入修改函数 return {}; } }; </script> ``` 2. **消费全局变量 (Inject)** 在任何后代组件里都可以轻松获取这些被提供的资源。 ```javascript <script> import { inject, onMounted } from &#39;vue&#39;; export default { setup() { const globalVar = inject(&#39;globalVar&#39;); // 接收全局变量 const setGlobalValue = inject(&#39;setGlobalValue&#39;); // 接受修改方法 onMounted(() => { console.log(globalVar.value); // 输出默认值 Default Global Variable[^2] setGlobalValue(&#39;Updated by Inject&#39;); // 更新其值 }); return { globalVar }; // 返回以便模板绑定显示 } }; </script> <template> {{ globalVar }} </template> ``` --- #### 方法三:借助 Mixin 定义全局行为 虽然 Vue3 更推荐 Composition API 方式开发,但在某些情况下仍可沿用 Options API 下的传统 mixin 技术来共享跨多个组件的行为模式。 1. **编写通用混入模块** 建立单独的一个 js 文件保存公共属性与功能。 ```javascript // mixins/globalMixin.js export default { data() { return { sharedState: null, }; }, methods: { initializeSharedState(value) { this.sharedState = value || &#39;Fallback Initializer&#39;; }, }, }; ``` 2. **导入在目标组件中运用** 然后只需简单地将其加入所需地方即可同步享有相同特性。 ```javascript <script> import globalMixin from &#39;@/mixins/globalMixin&#39;; export default { mixins: [globalMixin], mounted() { this.initializeSharedState(&#39;Set via Mixture&#39;); alert(this.sharedState); // 显示 Set via Mixture } }; </script> ``` --- #### 方法四:直接挂载于全局对象上 对于小型应用程序来说可能更倾向于简便快捷的方式,则可以选择把自定义字段附加到 Vue 应用本身或者其他 JavaScript 全局命名空间下。 1. **扩展原型链** 这种方式允许我们向每一个 Vue 组件暴露额外的能力。 ```javascript import { getCurrentInstance } from &#39;vue&#39;; const instance = getCurrentInstance(); if (instance && !instance.proxy?.$opMap) { Object.defineProperty(instance.proxy, &#39;$opMap&#39;, { get() { return window.opMap || {}; // 默认指向 Window 对象下的 opMap 属性[^4] }, }); } ``` 2. **实际调用演示** 此处假设已经存在了一个预设好的映射表结构可供查询。 ```javascript console.log(this.$opMap[&#39;operate&#39;]); // 动态读取 operate 字段的内容 ``` --- ### 总结 以上介绍了四种主流途径帮助开发者们解决 Vue3 开发过程中遇到关于如何高效设定及调整全局变量的需求。每一种都有各自适用范围,请依据具体业务需求选取最合适方案实施部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值