浅谈在vue项目中如何定义全局变量和全局函数


Posted in Javascript onOctober 24, 2017

写在前面:

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

定义全局变量

原理:

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

全局变量模块文件:

Global.vue文件:

<script>
const serverSrc='www.baidu.com';
const token='12345678';
const hasEnter=false;
const userSite="中国钓鱼岛";
 export default
 {
  userSite,//用户地址
  token,//用户token身份
  serverSrc,//服务器地址
  hasEnter,//用户登录状态
 }
</script>

使用方式1:

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

在text1.vue组件中使用:

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

<script>
import global_ from '../../components/Global'//引用模块进来
export default {
 name: 'text',
data () {
  return {
     token:global_.token,//将全局变量赋值到data里面,也可以直接使用global_.token
    }
  }
}
</script>
<style lang="scss" scoped>

</style>

使用方式2:

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

import global_ from './components/Global'//引用文件
  Vue.prototype.GLOBAL = global_//挂载到Vue实例上面

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

text2.vue:

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

<script>
export default {
 name: 'text',
data () {
  return {
     token:this.GLOBAL.token,//直接通过this访问全局变量。
    }
  }
}
</script>
<style lang="scss" scoped>
</style>

Vuex也可以设置全局变量:

通过vuex来存放全局变量,这里东西比较多,也相对复杂一些,有兴趣的小伙伴们,可自行查阅资料,折腾一波、

定义全局函数

原理

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

1. 在main.js里面直接写函数

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

Vue.prototype.changeData = function (){//changeData是函数名
 alert('执行成功');
}

组件中调用:

this.changeData();//直接通过this运行函数

2. 写一个模块文件,挂载到main.js上面。

base.js文件,文件位置可以放在跟main.js同一级,方便引用

exports.install = function (Vue, options) {
  Vue.prototype.text1 = function (){//全局函数1
  alert('执行成功1');
  };
  Vue.prototype.text2 = function (){//全局函数2
  alert('执行成功2');
  };
};

main.js入口文件:

import base from './base'//引用
  Vue.use(base);//将全局函数当做插件来进行注册

组件里面调用:

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

后话

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQ获取动态加载的图片大小的正确方法分享
Nov 08 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
Nov 25 Javascript
jquery1.10给新增元素绑定事件的方法
Mar 06 Javascript
js控制文本框只输入数字和小数点的方法
Mar 10 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
Mar 09 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
May 05 Javascript
基于vue实现swipe分页组件实例
May 25 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
Aug 14 Javascript
微信小程序实现手势滑动效果
Aug 26 Javascript
KnockoutJS数组比较算法实例详解
Nov 25 Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 Javascript
Vue实现input宽度随文字长度自适应操作
Jul 29 Javascript
Angularjs添加排序查询功能的实例代码
Oct 24 #Javascript
详解基于Vue+Koa的pm2配置
Oct 24 #Javascript
Vue.js2.0中的变化小结
Oct 24 #Javascript
使用Node.js实现ORM的一种思路详解(图文)
Oct 24 #Javascript
分享vue.js devtools遇到一系列问题
Oct 24 #Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
Oct 24 #Javascript
Vue基于NUXT的SSR详解
Oct 24 #Javascript
You might like
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
js读取本地文件的实例
2017/12/22 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
vue点击页面空白处实现保存功能
2019/11/06 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
Python学习之os模块及用法
2020/06/03 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
渗透攻击的测试步骤
2014/06/07 面试题
宣传口号大全
2014/06/16 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
租车协议书
2015/01/27 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android
SQL Server中的游标介绍
2022/05/20 SQL Server