# 在vue項目中 如何定義全局變量 全局函數(shù)

寫在前面:

如題,在項目中,經(jīng)常有些函數(shù)和變量是需要復(fù)用,比如說網(wǎng)站服務(wù)器地址,從后臺拿到的:用戶的登錄token,用戶的地址信息等,這時候就需要設(shè)置一波全局變量和全局函數(shù),這兩個設(shè)置不太難,而且有一些共通之處,可能有一些朋友對此不太了解,所以隨便寫出來分享一波。有需要的朋友可以做一下參考,喜歡的可以點(diǎn)波贊,或者關(guān)注一下,希望可以幫到大家。

本文首發(fā)于我的個人blog:obkoro1.com

定義全局變量

原理:

設(shè)置一個專用的的全局變量模塊文件,模塊里面定義一些變量初始狀態(tài),用export default 暴露出去,在main.js里面使用Vue.prototype掛載到vue實例上面或者在其它地方需要使用時,引入該模塊便可。

全局變量模塊文件:

Global.vue文件:

<script>
const serverSrc='www.baidu.com';
const token='12345678';
const hasEnter=false;
const userSite="中國釣魚島";
  export default
  {
    userSite,//用戶地址
    token,//用戶token身份
    serverSrc,//服務(wù)器地址
    hasEnter,//用戶登錄狀態(tài)
  }
</script>復(fù)制代碼

使用方式1:

在需要的地方引用進(jìn)全局變量模塊文件,然后通過文件里面的變量名字獲取全局變量參數(shù)值。

在text1.vue組件中使用:

<template>
    <div>{{ token }}</div>
</template>

<script>
import global_ from '../../components/Global'//引用模塊進(jìn)來
export default {
 name: 'text',
data () {
    return {
         token:global_.token,//將全局變量賦值到data里面,也可以直接使用global_.token
        }
    }
}
</script>
<style lang="scss" scoped>

</style>復(fù)制代碼

使用方式2:

在程序入口的main.js文件里面,將上面那個Global.vue文件掛載到Vue.prototype。

    import global_ from './components/Global'//引用文件
    Vue.prototype.GLOBAL = global_//掛載到Vue實例上面復(fù)制代碼

接著在整個項目中不需要再通過引用Global.vue模塊文件,直接通過this就可以直接訪問Global文件里面定義的全局變量。

text2.vue:

<template>
    <div>{{ token }}</div>
</template>

<script>
export default {
 name: 'text',
data () {
    return {
         token:this.GLOBAL.token,//直接通過this訪問全局變量。
        }
    }
}
</script>
<style lang="scss" scoped>
</style>復(fù)制代碼

Vuex也可以設(shè)置全局變量:

通過vuex來存放全局變量,這里東西比較多,也相對復(fù)雜一些,有興趣的小伙伴們,可自行查閱資料,折騰一波、

定義全局函數(shù)

原理

新建一個模塊文件,然后在main.js里面通過Vue.prototype將函數(shù)掛載到Vue實例上面,通過this.函數(shù)名,來運(yùn)行函數(shù)。

1. 在main.js里面直接寫函數(shù)

簡單的函數(shù)可以直接在main.js里面直接寫

Vue.prototype.changeData = function (){//changeData是函數(shù)名
  alert('執(zhí)行成功');
}復(fù)制代碼

組件中調(diào)用:

this.changeData();//直接通過this運(yùn)行函數(shù)復(fù)制代碼

2. 寫一個模塊文件,掛載到main.js上面。

base.js文件,文件位置可以放在跟main.js同一級,方便引用

exports.install = function (Vue, options) {
   Vue.prototype.text1 = function (){//全局函數(shù)1
    alert('執(zhí)行成功1');
    };
    Vue.prototype.text2 = function (){//全局函數(shù)2
    alert('執(zhí)行成功2');
    };
};復(fù)制代碼

main.js入口文件:

    import base from './base'//引用
    Vue.use(base);//將全局函數(shù)當(dāng)做插件來進(jìn)行注冊復(fù)制代碼

組件里面調(diào)用:

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

相關(guān)閱讀更多精彩內(nèi)容

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