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 相关文章推荐
javascript 表单验证常见正则
Sep 28 Javascript
javascript中的注释使用与注意事项小结
Sep 20 Javascript
在javascript中关于节点内容加强
Apr 11 Javascript
jQuery实现可拖动的浮动层完整代码
May 27 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 Javascript
基于javascript实现按圆形排列DIV元素(一)
Dec 02 Javascript
利用Bootstrap实现表格复选框checkbox全选
Dec 21 Javascript
vue如何安装使用Quill富文本编辑器
Sep 21 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
Oct 01 Javascript
vue组件之间通信实例总结(点赞功能)
Dec 05 Javascript
Vue触发隐藏input file的方法实例详解
Aug 14 Javascript
js实现金山打字通小游戏
Jul 24 Javascript
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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
php array的学习笔记
2012/05/16 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
使用JavaScript 编写简单计算器
2014/11/24 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
如何提高数据访问速度
2016/12/26 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
python检测某个变量是否有定义的方法
2015/05/20 Python
Python 中的 else详解
2016/04/23 Python
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
python打造爬虫代理池过程解析
2019/08/15 Python
python实现单链表的方法示例
2019/09/03 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
Hotels.com印度:酒店预订
2019/05/11 全球购物
校庆标语集锦
2014/06/25 职场文书
2014年会计工作总结
2014/11/27 职场文书
活动总结模板大全
2015/05/11 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
PHP策略模式写法
2021/04/01 PHP
php解析非标准json、非规范json的方式实例
2022/05/10 PHP