vue項目中定義全局變量、函數(shù)的幾種方法

前言

在項目中,經(jīng)常會復(fù)用一些變量和函數(shù),比如用戶的登錄token,用戶信息等。這時將它們設(shè)為全局的就顯得很重要了,全局變量和全局函數(shù)之間有一些相通之處,它們其實很簡單,但是有些人可能還不太了解。簡單總結(jié)分享一波,希望對你有所幫助。

定義全局變量

原理:使用模塊(.js或.vue文件)來管理全局變量,最后使用export暴露出去 (最好導(dǎo)出的格式為對象,方便在其他地方調(diào)用),當其它地方需要使用時,用import導(dǎo)入該模塊

1、使用全局變量專用模塊,掛載到main.js文件上面

全局變量模塊Global.vue定義如下:

const token='12345678';
const userStatus=false;
export default {
    token, // 用戶token身份
    userStatus // 用戶登錄狀態(tài)
}

模塊里的變量用export暴露出去,當其它地方需要使用時,引入模塊便可。

使用全局變量:

import global from '../../components/Global'//引用模塊進來
export default {
data () {
    return {
         token:global.token,//將全局變量賦值到data里面
        }
    }
}

2、全局變量模塊掛載到Vue.prototype上

Global.vue文件同上,在項目入口的main.js里配置:

import global from '../../components/Global'
Vue.prototype.GLOBAL = global

掛載之后,在需要引用全局變量的模塊處,不需再導(dǎo)入全局變量模塊,而是直接用this就可以引用了,如下:

export default {
  data () {
    return {
     token: this.GLOBAL.token,
    }
  }
}

方法一跟方法二的主要區(qū)別是,方法二全局只需要導(dǎo)入一次就可以,簡單方便。

3、使用vuex定義全局變量

Vuex是一個專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài)。因此可以存放著全局量。

// index.js文件里定義vuex
import state from './state'
export default new Vuex.Store({
  actions,
  getters,
  mutations,
  state,
})
// state.js里面存放全局變量,并且暴露出去
const state = {
  token:'12345678',
  language: 'en',
}

export default state

使用的時候,在需要引用全局變量的模塊處直接使用this.$store調(diào)用

export default {
    methods: {
      getInternation() {
        if (this.$store.state.language === 'en') {
          this.internation = 2
        } else if (this.$store.state.language === 'zh_CN') {
          this.internation = 1
        }
      }
    } 
}

因為Vuex有點繁瑣,有點殺雞用牛刀的感覺。因此認為并沒有必要使用它。上面只是簡單的使用,如果想要具體了解使用方式,可以去查閱資料具體掌握。

定義全局函數(shù)

原理:在main.js里面通過Vue.prototype將函數(shù)掛載到Vue實例上面,通過this.函數(shù)名,來運行函數(shù)。

1、在main.js文件直接定義方法

簡單的函數(shù)可以直接寫在main.js文件里定義。

// 將方法掛載到vue原型上
Vue.prototype.changeData = function (){
  alert('執(zhí)行成功');
}

使用的時候組件里直接調(diào)用。

//直接通過this運行函數(shù),這里this是vue實例對象
this.changeData();

2、使用全局函數(shù)專用模塊,掛載到main.js上面

base.js文件,文件位置可以放在跟main.js同一級,方便引用(這點可以依據(jù)個人習慣決定)。

exports.install = function (Vue, options) {
    Vue.prototype.changeData = function (){
        alert('執(zhí)行成功');
    };
};

main.js引入并使用。

import base from './base'
Vue.use(base);

所有的組件里就可以調(diào)用該函數(shù)。

this.changeData();

結(jié)語

以上是vue中全局變量和全局函數(shù)使用的全部內(nèi)容。希望總結(jié)的東西對你有所幫組。還不太了解的可以多看幾遍,大家加油?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容