您的当前位置:首页>全部文章>文章详情

【Vue】Vue定义全局变量的方法

CrazyPanda发表于:2024-04-22 20:35:54浏览:351次TAG:


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"1
  • 在方法中使用

<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中sync作用
vue 中的 sync 修饰符用于在父组件和子组件之间实现双向数据绑定。它通过生成一个 v-model 指令,将子组件的 prop 与父组件的 prop 绑定在一起,从而实现数据同步。用法如下:1. 在子组件中使用 v-bind:prop.sync=&quot;parentprop&quot;,其中 prop 是子组件的 prop 名称,parentprop 是父组件绑定的 prop 名称。Vue 中 sync 作用在 Vue 中,sync 修饰符是一种特殊的语法糖,它允许在父组件和子组件之间进
发表于:2024-05-16 浏览:236 TAG:
【Vue】Vue 单文件组件 (SFC) 规范
简介.vue 文件是一个自定义的文件类型,用类 HTML 语法描述一个 Vue 组件。每个 .vue 文件包含三种类型的顶级语言块 &lt;template&gt;、&lt;script&gt; 和 &lt;style&gt;,还允许添加可选的自定义块:
发表于:2024-03-29 浏览:271 TAG:
【Vue】vue是什么模式的前端框架
vue 中的 mvvm 架构将应用程序分为 model、view 和 viewmodel:model:包含数据和业务逻辑,独立于视图。view:显示 model 中的数据,使用模板语法进行数据绑定。viewmodel:model 和 view 之间的桥梁,包含与 view 交互的数据和方法,并更新 view。mvvm 在 vue 中的优势包括响应式数据绑定、代码可重用性、提高生产力、易于调试。Vue:MVVM 架构什么是 MVVM?MVVM(Model-View-ViewModel)是一种软件设
发表于:2024-04-28 浏览:301 TAG:
【Vue】vue框架怎么运行
vue.js是一个用于构建用户界面的javascript框架,其工作原理包括:模板编译:将html模板编译为vdom;响应式系统:检测数据变化并更新vdom;dom更新:有效更新dom,最小化操作次数;自动渲染:监视数据变化并自动重新渲染ui。Vue.js框架的工作原理Vue.js是一个用于构建用户界面(UI)的JavaScript框架。它采用“响应式”系统,当数据发生变化时,框架会自动更新UI,简化了Web开发过程。Vue.js框架的工作流程:1. 模板编译:Vue.js将HTML模板编译为虚
发表于:2024-04-21 浏览:304 TAG:
【Vue】Vue中字符串数组和对象常用方法介绍
在Vue中,数组和字符串是我们最常处理的数据类型。Vue提供了响应式系统,可以自动跟踪数组和对象的变化,并响应式地更新DOM。在Vue中,您可以像在任何JavaScript应用程序中一样操作这些数据类型。下面时整理的Vue中字符串 数组 以及对象的常用操作方法。一.数组方法1.增删改: unshift、push、splice、shift、pop、splice、slice&nbsp;1.1.unshift:在数组的头部添加内容//&nbsp;数组.unshift(&quot;添加的值&quot;)
发表于:2024-05-08 浏览:281 TAG:
【Vue】uniapp(vue3)+node.js+websocket(实现实时通信效果)
文章目录概要整体架构流程技术名词解释技术细节小结概要uniapp基于vue3,小程序的聊天功能项目是基于node.js服务器搭建的简易双向通信网页,实现了实时更新在线人数以及用户间即时通讯的功能。整体架构流程后台接口代码1、首先我们可以通过Express 应用程序生成器快速搭建一个后台框架。(这快可以参考官网)2、服务端/** &nbsp;*&nbsp;WebSocket模块 &nbsp;*/ &nbsp; const&nbsp;{&nbsp;WebSocketServer&nbsp;}&amp;nbs
发表于:2023-12-05 浏览:297 TAG:
【Vue】Antd Pro Vue的使用(八) —— 表单组件的常用配置
1、清除配置allow-clear在ant design react组件中,表单组件默认都有清除按钮(输入框右侧的小黑叉号),在vue组件中需要自己配置,即给组件加上allow-clear属性并且所有组件都支持这个属性,a-input、a-select、a-textarea、a-date-picker等都支持&lt;a-form-item&nbsp;label=&quot;用户名&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;a-input&nbsp; &nbsp;
发表于:2024-05-10 浏览:278 TAG:
【Vue】Vue3项目filter.js组件封装
1、element-plus(el-table)修改table的行样式export&nbsp;function&nbsp;elTableRowClassName({&nbsp;row,&nbsp;rowIndex&nbsp;})&nbsp;{ &nbsp;&nbsp;if&nbsp;(rowIndex&nbsp;%&nbsp;2&nbsp;!=&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&#39;default-row&#39; &amp;nb
发表于:2023-12-15 浏览:319 TAG:
【Vue】Vue中使用Vuex管理全局状态详解和示例
vue.js是一种流行的前端框架,它提供了很多方便的功能,但当应用变得越来越复杂时,我们很快就会发现向子组件传递大量数据变得非常困难。这就是为什么vuex在vue中变得如此重要的原因。vuex是一个全局状态管理器,使得数据和状态的共享变得更容易。在本文中,我们将深入了解vuex的工作原理并演示如何将其集成到您的vue应用程序中。什么是VuexVuex是一个用于Vue.js应用程序的状态管理模式和库,常用于解决跨层级、多组件、多页面共享状态问题。它将应用程序的状态集中存储到一个单一的store中,
发表于:2024-04-29 浏览:310 TAG:
【Vue】vue创建应用并运行
简介Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。Vue 是一个框架,也是一个生态。其功能覆盖了大部分前端开发常见的需求。但 Web 世界是十分多样化的,不同的开发者在 Web 上构建的东西可能在形式和规模上会有很大的不同。考虑到这一点,Vue 的设计非常注重灵活性和
发表于:2024-04-23 浏览:366 TAG: