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 相关文章推荐
js监听鼠标事件控制textarea输入字符串的个数
Sep 29 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
Oct 17 Javascript
浅析Node.js中的内存泄漏问题
Jun 23 Javascript
学习JavaScript设计模式之装饰者模式
Jan 19 Javascript
JavaScript禁止用户多次提交的两种方法
Jul 24 Javascript
浅谈Angular2 模块懒加载的方法
Oct 04 Javascript
element-ui 关于获取select 的label值方法
Aug 24 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 Javascript
JS常见构造模式实例对比分析
Aug 27 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
Feb 20 Javascript
微信小程序城市选择及搜索功能的方法
Mar 22 Javascript
原生js实现获取form表单数据代码实例
Mar 27 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
PHP5/ZendEngine2的改进
2006/10/09 PHP
PHP 命名空间实例说明
2011/01/27 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
文本加密解密
2006/06/23 Javascript
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python多线程socket编程之多客户端接入
2017/09/12 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
旅游市场营销方案
2014/03/09 职场文书
讲座主持词
2014/03/20 职场文书
政治表现评语
2014/05/04 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python