浅谈在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 相关文章推荐
jquery 简短右键菜单 多浏览器兼容
Jan 01 Javascript
js客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 Javascript
JS实现自动变换的菜单效果代码
Sep 09 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
Sep 15 Javascript
jquery自定义插件——window的实现【示例代码】
May 06 Javascript
基于JavaScript实现活动倒计时效果
Apr 20 Javascript
Vue声明式渲染详解
May 17 Javascript
js保留两位小数方法总结
Jan 31 Javascript
vue 监听屏幕高度的实例
Sep 05 Javascript
javascript关于“时间”的一次探索
Jul 24 Javascript
多种类型jQuery网页验证码插件代码实例
Jan 09 jQuery
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
function.inc.php超越php
2006/12/09 PHP
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
Python 迭代器工具包【推荐】
2016/05/06 Python
Python列表切片用法示例
2017/04/19 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
python时间time模块处理大全
2020/10/25 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
地质灾害防治方案
2014/05/14 职场文书
教书育人演讲稿
2014/09/11 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
颐和园的导游词
2015/01/30 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis