vue项目中定义全局变量、函数的几种方法


Posted in Javascript onNovember 08, 2019

前言

在项目中,经常会复用一些变量和函数,比如用户的登录token,用户信息等。这时将它们设为全局的就显得很重要了,全局变量和全局函数之间有一些相通之处,它们其实很简单,但是有些人可能还不太了解。简单总结分享一波,希望对你有所帮助。

定义全局变量

原理:使用模块(.js或.vue文件)来管理全局变量,最后使用export暴露出去 (最好导出的格式为对象,方便在其他地方调用),当其它地方需要使用时,用import导入该模块

1、使用全局变量专用模块,挂载到main.js文件上面

全局变量模块Global.vue定义如下:

const token='12345678';
const userStatus=false;
export default {
  token, // 用户token身份
  userStatus // 用户登录状态
}

模块里的变量用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

挂载之后,在需要引用全局变量的模块处,不需再导入全局变量模块,而是直接用this就可以引用了,如下:

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

方法一跟方法二的主要区别是,方法二全局只需要导入一次就可以,简单方便。

3、使用vuex定义全局变量

Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。因此可以存放着全局量。

// 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调用

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有点繁琐,有点杀鸡用牛刀的感觉。因此认为并没有必要使用它。上面只是简单的使用,如果想要具体了解使用方式,可以去查阅资料具体掌握。

定义全局函数

原理:在main.js里面通过Vue.prototype将函数挂载到Vue实例上面,通过this.函数名,来运行函数。

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

简单的函数可以直接写在main.js文件里定义。

// 将方法挂载到vue原型上
Vue.prototype.changeData = function (){
 alert('执行成功');
}

使用的时候组件里直接调用。

//直接通过this运行函数,这里this是vue实例对象
this.changeData();

2、使用全局函数专用模块,挂载到main.js上面

base.js文件,文件位置可以放在跟main.js同一级,方便引用(这点可以依据个人习惯决定)。

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

main.js引入并使用。

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

所有的组件里就可以调用该函数。

this.changeData();

结语

以上是vue中全局变量和全局函数使用的全部内容。希望总结的东西对你有所帮组。还不太了解的可以多看几遍,大家加油!!!也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
借用Google的Javascript API Loader来加速你的网站
Jan 28 Javascript
Google排名中的10个最著名的 JavaScript库
Apr 27 Javascript
jQuery与其它库冲突的解决方法
Jun 25 Javascript
如何判断微信内置浏览器(通过User Agent实现)
Sep 01 Javascript
JS验证逗号隔开可以是中文字母数字
Apr 22 Javascript
Javascript中的数组常用方法解析
Jun 17 Javascript
JavaScript提高加载和执行效率的方法
Feb 03 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
Jul 10 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
详解使用jest对vue项目进行单元测试
Sep 07 Javascript
JS实现的字符串数组去重功能小结
Jun 17 Javascript
Vue详细的入门笔记
May 10 Vue.js
Vue修改项目启动端口号方法
Nov 07 #Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 #Javascript
vue基本使用--refs获取组件或元素的实例
Nov 07 #Javascript
浅谈Vue中render中的h箭头函数
Nov 07 #Javascript
基于JavaScript伪随机正态分布代码实例
Nov 07 #Javascript
Vue 通过公共字段,拼接两个对象数组的实例
Nov 07 #Javascript
vue之a-table中实现清空选中的数据
Nov 07 #Javascript
You might like
微信API接口大全
2015/04/15 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
javascript instanceof 内部机制探析
2010/10/15 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
详解Vue组件之作用域插槽
2018/11/22 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python 判断一个进程是否存在
2009/04/09 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
Python异常处理知识点总结
2019/02/18 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
Keras设置以及获取权重的实现
2020/06/19 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
Python3.9新特性详解
2020/10/10 Python
Python的信号库Blinker用法详解
2020/12/31 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
《陋室铭》教学反思
2014/02/26 职场文书
作风年建设汇报材料
2014/08/14 职场文书
寻找成龙观后感
2015/06/12 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
Mysql Show Profile
2021/04/05 MySQL
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js