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

2024-02-27 1224阅读

温馨提示:这篇文章已超过449天没有更新,请注意相关的内容是否还可用!

文章目录

        • 定义全局变量的方法
          • 1、使用Vue.prototype定义全局变量
          • 2、使用env文件定义全局变量
          • 3、使用vuex定义全局变量
          • 4、使用Vue.mixin定义全局变量
          • 5、使用localStorage 或 sessionStorage定义全局变量
          • 6、vue3中配置globalProperties
          • 7、自动配置打包版本日期
            • 7.1、vue3在vite.config.js中定义环境变量。获取当前打包日期时间。
            • 7.2、vue2在vue.config.js中定义环境变量。获取当前打包日期时间。

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

              在Vue项目中定义全局变量的几种常用方法
              (图片来源网络,侵删)
              定义全局变量的方法
              1、使用Vue.prototype定义全局变量

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

              • 在main.js定义全局变量
                // main.js
                Vue.prototype.baseUrl = "https://www.example.com/api"
                
                • 在页面中使用
                    
                      {{baseUrl}}
                    
                  
                  
                  • 在方法中使用
                    created() {
                        console.log(this.baseUrl)
                    },
                    
                    
                    2、使用env文件定义全局变量

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

                    • 在.env文件中定义
                      VUE_APP_BASE_URL = "https://www.example.com/api"
                      
                      • 在方法中使用
                        created() {
                            const baseUrl = process.env.VUE_APP_BASE_URL
                            console.log(baseUrl)
                        },
                        
                        
                        3、使用vuex定义全局变量

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

                        • 定义全局变量
                          //store/index.js
                          export default new Vuex.Store({
                            state: {
                              baseUrl: "https://www.example.com/api"
                            },
                          })
                          
                          • 在页面中使用
                              
                                {{this.$store.state.baseUrl}}
                              
                            
                            
                            • 在方法中使用
                              created() {
                                  const baseUrl = this.$store.state.baseUrl
                                  console.log(baseUrl)
                              },
                              
                              
                              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)
                                  
                                  • 在页面中使用
                                      
                                        {{baseUrl}}
                                      
                                    
                                    
                                    • 在方法中使用
                                      created() {
                                          console.log(this.baseUrl)
                                      },
                                      
                                      
                                      5、使用localStorage 或 sessionStorage定义全局变量

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

                                      • 在main.js中定义
                                        localStorage.setItem("baseUrl", "https://www.example.com/api")
                                        
                                        • 在方法中使用
                                          created() {
                                              const baseUrl = localStorage.getItem("baseUrl")
                                              console.log(baseUrl)
                                          },
                                          
                                          
                                          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')
                                            
                                            • 在页面中使用
                                                
                                                  {{baseUrl}}
                                                
                                              
                                              
                                              • 在方法中使用
                                                import { getCurrentInstance } from "vue"
                                                const { proxy } = getCurrentInstance()
                                                console.log(proxy.baseUrl)
                                                
                                                
                                                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中打印
                                                        console.log(import.meta.env.VITE_APP_VERSION)
                                                    
                                                    
                                                    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中打印
                                                        created() {
                                                            console.log(process.env.VERSION)
                                                        },
                                                        
                                                        
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]