浅谈在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 相关文章推荐
prototype 中文参数乱码解决方案
Nov 09 Javascript
js自定义鼠标右键的实现原理及源码
Jun 23 Javascript
js图片翻书效果代码分享
Aug 20 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
JavaScript 冒泡排序和选择排序的实现代码
Sep 03 Javascript
Vue和Bootstrap的整合思路详解
Jun 30 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 jQuery
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
Aug 25 Javascript
AngularJS $http post 传递参数数据的方法
Oct 09 Javascript
一步一步实现Vue的响应式(对象观测)
Sep 02 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
JavaScript继承的三种方法实例
May 12 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
Yii数据库缓存实例分析
2016/03/29 PHP
javascript Array.remove() 数组删除
2009/08/06 Javascript
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
python学习之面向对象【入门初级篇】
2017/01/21 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
pycharm新建一个python工程步骤
2019/07/16 Python
对Python _取log的几种方式小结
2019/07/25 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
高校生生产实习自我鉴定
2013/09/21 职场文书
物业管理个人自我评价
2013/11/08 职场文书
毕业自我鉴定书
2014/03/24 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
民族学专业求职信
2014/07/28 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
申报材料格式
2014/12/30 职场文书