Vue项目中定义全局变量的几种常用方法总结

 更新时间:2023年12月12日 15:32:02   作者:邹荣乐  
在项目中经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量,这篇文章主要给大家介绍了关于Vue项目中定义全局变量的几种常用方法的相关资料,需要的朋友可以参考下

前言

在Vue项目中我们需要使用许多的变量来维护数据的流向和状态,这些变量可以是本地变量、组件变量、父子组件变量等,但这些变量都是有局限性的。在一些场景中,可能需要在多个组件中共享某个变量,此时全局变量就派上了用场。

定义全局变量的方法

1、使用Vue.prototype定义全局变量

通过在 vue 的原型上定义属性,可以在所有组件中访问该属性。

  • 在main.js定义全局变量
// main.js
Vue.prototype.baseUrl = "https://www.example.com/api"
  • 在页面中使用
<template>
  <div>
    {{baseUrl}}
  </div>
</template>
  • 在方法中使用
<script>
created() {
    console.log(this.baseUrl)
},
</script>

2、使用env文件定义全局变量

在Vue项目的根目录中创建一个.env文件,用于存储一些全局变量。

  • 在.env文件中定义
VUE_APP_BASE_URL = "https://www.example.com/api"
  • 在方法中使用
<script>
created() {
    const baseUrl = process.env.VUE_APP_BASE_URL
    console.log(baseUrl)
},
</script>

3、使用vuex定义全局变量

vuex 是 vue 的官方状态管理库,可以用于管理全局状态。

  • 定义全局变量
//store/index.js
export default new Vuex.Store({
  state: {
    baseUrl: "https://www.example.com/api"
  },
})
  • 在页面中使用
<template>
  <div>
    {{this.$store.state.baseUrl}}
  </div>
</template>
  • 在方法中使用
<script>
created() {
    const baseUrl = this.$store.state.baseUrl
    console.log(baseUrl)
},
</script>

4、使用Vue.mixin定义全局变量

通过混入(mixin)的方式,可以将一些公共的属性或方法混入到所有组件中。

  • 创建一个全局变量的js文件。示例文件路径为:./utils/globalVar.js
//globalVar.js
export default {
    data() {
        return {
            baseUrl: "https://www.example.com/api"
        };
    }
}
  • 在项目的 main.js 文件中引入该 globalVar.js 文件并使用 Vue.mixin() 方法将之全局混入:
//main.js
import globalVar from './utils/globalVar.js'
Vue.mixin(globalVar)
  • 在页面中使用
<template>
  <div>
    {{baseUrl}}
  </div>
</template>
  • 在方法中使用
<script>
created() {
    console.log(this.baseUrl)
},
</script>

5、使用localStorage 或 sessionStorage定义全局变量

通过将变量存储在 localStorage 或 sessionStorage 中,可以在所有组件中共享该变量。

  • 在main.js中定义
localStorage.setItem("baseUrl", "https://www.example.com/api")
  • 在方法中使用
<script>
created() {
    const baseUrl = localStorage.getItem("baseUrl")
    console.log(baseUrl)
},
</script>

6、vue3中配置globalProperties

vue3提供了专门公共数据配置的方式: globalProperties、getCurrentInstance

  • 在main.js中定义
//main.js
import { createApp } from 'vue'
import App from './App.vue'
const app=createApp(App)
app.config.globalProperties.baseUrl = "https://www.example.com/api"
app.mount('#app')
  • 在页面中使用
<template>
  <div>
    {{baseUrl}}
  </div>
</template>
  • 在方法中使用
<script setup>
import { getCurrentInstance } from "vue"
const { proxy } = getCurrentInstance()
console.log(proxy.baseUrl)
</script>

7、自动配置打包版本日期

在前端开发过程中,总会遇到前端包部署之后,不知道是否成功,是否替换了原来的包,看不出来事什么时候的包。我们可以在控制台输出一个打包的日期。这样就很容易区分前端包的版本日期了。

7.1、vue3在vite.config.js中定义环境变量。获取当前打包日期时间。

  • 在vite.config.js配置
//vite.config.js
process.env.VITE_APP_VERSION = JSON.stringify(new Date().toLocaleString())
  • 在App.vue中打印
<script setup>
    console.log(import.meta.env.VITE_APP_VERSION)
</script>

7.2、vue2在vue.config.js中定义环境变量。获取当前打包日期时间。

  • 在vue.config.js配置
//vue.config.js
const webpack = require('webpack');
module.exports = {
  configureWebpack: {
    plugins: [
     new webpack.DefinePlugin({
       "process.env.VERSION": JSON.stringify(new Date().toLocaleString())
     })
   ]
  }
}
  • 在App.vue中打印
<script>
created() {
    console.log(process.env.VERSION)
},
</script>

总结 

到此这篇关于Vue项目中定义全局变量的几种常用方法总结的文章就介绍到这了,更多相关Vue定义全局变量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue设计一个倒计时秒杀的组件详解

    vue设计一个倒计时秒杀的组件详解

    这篇文章主要介绍了vue设计一个倒计时秒杀的组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Vue组件化学习之scoped详解

    Vue组件化学习之scoped详解

    这篇文章主要为大家详细介绍了Vue组件化学习之scoped,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • vue打印功能实现的两种方法总结

    vue打印功能实现的两种方法总结

    在项目中,有时需要打印页面的表格,所以下面这篇文章主要给大家介绍了关于vue打印功能实现的两种方法,以及批量打印的完整代码,需要的朋友可以参考下
    2021-06-06
  • 项目迁移vite引入图片资源报require is not defined问题的解决办法

    项目迁移vite引入图片资源报require is not defined问题的解决办法

    这篇文章主要给大家介绍了关于项目迁移vite引入图片资源报require is not defined问题的解决办法,文中通过代码介绍的非常详细,对大家学习或者使用vite具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • Vue常用指令详解分析

    Vue常用指令详解分析

    这篇文章给大家详细分析了关于VUE的常用的相关指令内容,对此有需要的朋友们可以学习下。
    2018-08-08
  • vue组件中实现嵌套子组件案例

    vue组件中实现嵌套子组件案例

    这篇文章主要介绍了vue组件中实现嵌套子组件案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • vue使用file-saver本地文件导出功能

    vue使用file-saver本地文件导出功能

    这篇文章主要介绍了vue使用file-saver本地文件导出,大家需要安装xlsx和file-saver,然后创建localExports.js文件,具体实现代码跟随小编一起看看吧
    2022-01-01
  • Vue-input框checkbox强制刷新问题

    Vue-input框checkbox强制刷新问题

    这篇文章主要介绍了Vue-input框checkbox强制刷新问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • vue.js移动端tab组件的封装实践实例

    vue.js移动端tab组件的封装实践实例

    本篇文章主要介绍了vue.js移动端tab的封装实践实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Element Plus 去掉表格外边框的实现代码

    Element Plus 去掉表格外边框的实现代码

    使用el-table组件拖拽时, 想使用自定义样式进行拖拽, 想去掉外边框, 并在表头加入竖杠样式,本文给大家介绍Element Plus 去掉表格外边框的实现代码,感兴趣的朋友一起看看吧
    2025-04-04

最新评论