Vue項目中定義全局變量的幾種常用方法總結
前言
在Vue項目中我們需要使用許多的變量來維護數據的流向和狀態(tài),這些變量可以是本地變量、組件變量、父子組件變量等,但這些變量都是有局限性的。在一些場景中,可能需要在多個組件中共享某個變量,此時全局變量就派上了用場。
定義全局變量的方法
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項目的根目錄中創(chuàng)建一個.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 的官方狀態(tài)管理庫,可以用于管理全局狀態(tài)。
- 定義全局變量
//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)的方式,可以將一些公共的屬性或方法混入到所有組件中。
- 創(chuàng)建一個全局變量的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、自動配置打包版本日期
在前端開發(fā)過程中,總會遇到前端包部署之后,不知道是否成功,是否替換了原來的包,看不出來事什么時候的包。我們可以在控制臺輸出一個打包的日期。這樣就很容易區(qū)分前端包的版本日期了。
7.1、vue3在vite.config.js中定義環(huán)境變量。獲取當前打包日期時間。
- 在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中定義環(huán)境變量。獲取當前打包日期時間。
- 在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定義全局變量內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
項目遷移vite引入圖片資源報require?is?not?defined問題的解決辦法
這篇文章主要給大家介紹了關于項目遷移vite引入圖片資源報require?is?not?defined問題的解決辦法,文中通過代碼介紹的非常詳細,對大家學習或者使用vite具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01