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 相关文章推荐
基于jquery完美拖拽,可返回拖动轨迹
Mar 29 Javascript
javascript中parentNode,childNodes,children的应用详解
Dec 17 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
Jan 28 Javascript
javascript表单验证大全
Aug 12 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
May 19 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
Oct 28 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
jQuery 禁止表单用户名、密码自动填充功能
Oct 30 jQuery
JQuery扩展对象方法操作示例
Aug 21 jQuery
vue动态配置模板 'component is'代码
Jul 04 Javascript
Layui弹出层 加载 做编辑页面的方法
Sep 16 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/12/06 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
Python SQL查询并生成json文件操作示例
2018/08/17 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
Python Django搭建网站流程图解
2020/06/13 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
生物技术研究生自荐信
2013/11/12 职场文书
公司授权委托书范本
2014/04/03 职场文书
经理任命书模板
2014/06/06 职场文书
新农村建设标语
2014/06/24 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
单位租房协议范本
2014/12/03 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL