在vue项目中 实现定义全局变量 全局函数操作
写在前面:
如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数,这两个设置不太难,而且有一些共通之处,可能有一些朋友对此不太了解,所以随便写出来分享一波。
定义全局变量
原理:
设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用exportdefault暴露出去,在main.js里面使用Vue.prototype挂载到vue实例上面或者在其它地方需要使用时,引入该模块便可。
全局变量模块文件:
Global.vue文件:
使用方式1:
在需要的地方引用进全局变量模块文件,然后通过文件里面的变量名字获取全局变量参数值。
在text1.vue组件中使用:
{{token}}
使用方式2:
在程序入口的main.js文件里面,将上面那个Global.vue文件挂载到Vue.prototype。
importglobal_from'./components/Global'//引用文件Vue.prototype.GLOBAL=global_//挂载到Vue实例上面
接着在整个项目中不需要再通过引用Global.vue模块文件,直接通过this就可以直接访问Global文件里面定义的全局变量。
text2.vue:
{{token}}
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入口文件:
importbasefrom'./base'//引用Vue.use(base);//将全局函数当做插件来进行注册
组件里面调用:
this.text1();
this.text2();
后话
上面就是如何定义全局变量全局函数的内容了,这里的全局变量全局函数可以不局限于vue项目,vue-cli是用了webpack做模块化,其他模块化开发,定义全局变量、函数的套路基本上是差不多。上文只是对全局变量,全局函数的希望看完本文能给大家一点帮助。
补充知识:vue中如何在外部调用methods的方法
1.首先定义一个公共的vue组件;
vareventHub=newVue();
2.在事件当前的组件中,在created中,用$on向公共的组件eventHub传递,translate是自定义的,getCardNum(data)是要在外部调用的方法;
eventHub.$on('translate',function(data){ that.getCardNum(data); });
3.最后在父组件中,注意负组件要用一个变量保存,
varvm=newVue({});
4.在父组件中的methods的方法中定义一个方法,在方法里用$emit接收公共组件里的方法;
varvm=newVue({ el:'#example', data:{ msg:'HelloDirective', data:{} }, methods:{ getCardNum:function(data,on){ eventHub.$emit('translate',data); } } });
5.最后就可以在vue组件外部,或者文件外部调用getCardNum(data)这个函数,比如在html中就可以onclick=vm.getCardNum()这样来调用;vm是父组件
6.注意一定要把父组件的变量名写上
vm.getCardNum();
我用vue开发的过程中,遇到java后台的弹窗页面想要调用我vue组件中的方法,可是后台的弹窗页面并没有在我的vue组件中,其他的页面想要调用的vue中的方法,
只能在父组件中调用,于是研究了很久,最后确定,将组件中的function()方法传递到最上一层的父组件中,将负组件保存在变量中,最后直接在其他页面中调用方法,调用的时候,就不能用@click方法来调用了,
因为后台的页面并不在我的vue组件内部,于是调用就是onclick=vm.getCardNum();这样调用,vm是父组件;
以上这篇在vue项目中实现定义全局变量全局函数操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。