Vue 项目中定义全局变量和全局函数

写在前面

如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的用户的登录 token、地址信息等,这时候就需要设置一波全局变量和全局函数,这两个设置不太难,而且有一些共通之处,可能有一些朋友对此不太了解,所以随便写出来分享一波。

全局变量

原理

设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用 export default 暴露出去,在 main.js 里面使用 Vue.prototype 挂载到 Vue 实例上面或者在其它地方需要使用时,引入该模块便可。

定义全局变量模块文件

Global.vue
<script>
const token='12345678';
export default {
  token,
}
</script>

使用全局变量

方式 1

在需要的地方引用进全局变量模块文件,然后通过文件里面的变量名字获取全局变量参数值。

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

<script>
import global_ from '../../components/Global'//引用模块进来
export default {
  name: 'text',
  data () {
    return {
      token: global_.token,
    }
  }
}
</script>
方式 2

在程序入口的 main.js 文件里面,将上面那个 Global.vue 文件挂载到 Vue.prototype。

main.js
import global_ from './components/Global'
Vue.prototype.GLOBAL = global_ // 挂载

接着在整个项目中不需要再通过引用 Global.vue 模块文件,直接通过 this 就可以直接访问 Global 文件里面定义的全局变量。

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

<script>
export default {
  name: 'text',
  data () {
    return {
      token:this.GLOBAL.token,
    }
  }
}
</script>

全局函数

原理

新建一个模块文件,然后在 main.js 里面通过 Vue.prototype 将函数挂载到 Vue 实例上面。

定义全局函数

在 main.js 里面直接写函数

简单的函数可以直接在 main.js 里面直接写。

main.js
Vue.prototype.changeData = function() {
  alert('执行成功');
}

组件中调用。

this.changeData();
定义全局函数模块文件,并挂载到 main.js 上面
base.js
exports.install = function (Vue, options) {
  Vue.prototype.test1 = function() {
    alert('执行成功1');
  };
  Vue.prototype.test2 = function() {
    alert('执行成功2');
  };
};
main.js
import base from './base'
Vue.use(base);// 将全局函数当做插件来进行注册

使用全局函数

组件里面调用:

this.text1();
this.text2();

后话

上面就是如何定义全局变量和全局函数的内容了,这里的全局变量全局函数可以不局限于 vue 项目,vue-cli 是用了 webpack 做模块化,其他模块化开发,定义全局变量、函数的套路基本上是差不多。上文只是对全局变量,全局函数的。希望看完本文能给大家一点帮助。

参考资料

来源

在vue项目中定义全局变量和全局函数