详解VUE 定义全局变量的几种实现方式


Posted in Javascript onJune 01, 2017

最近在学习VUE.js 中间涉及到JS全局变量,与其说是VUE的全局变量,不如说是模块化JS开发的全局变量。

1、全局变量专用模块

就是以一个特定模块来组织管理这些全局量,需要引用的地方导入该模块便好。

全局变量专用模块 Global.vue

<script type="text/javascript">
const colorList = [
 '#F9F900',
 '#6FB7B7',
 '#9999CC',
 '#B766AD',
 '#B87070',
 '#FF8F59',
 '#FFAF60',
 '#FFDC35',
 '#FFFF37',
 '#B7FF4A',
 '#28FF28',
 '#1AFD9C',
 '#00FFFF',
 '#2894FF',
 '#6A6AFF',
 '#BE77FF',
 '#FF77FF',
 '#FF79BC',
 '#FF2D2D',
 '#ADADAD'
]
const colorListLength = 20
function getRandColor () {
 var tem = Math.round(Math.random() * colorListLength)
 return colorList[tem]
}
export default
{
 colorList,
 colorListLength,
 getRandColor
}
</script>

模块里的变量用export 暴露出去,当其它地方需要使用时,引入模块global便可。

需要使用全局变量的模块 html5.vue

<template>
 <ul>
  <template v-for="item in mainList">
   <div class="projectItem" :style="'box-shadow:1px 1px 10px '+ getColor()">
     <router-link :to="'project/'+item.id">
      ![](item.img)
      <span>{{item.title}}</span>
     </router-link>
   </div>
  </template>
 </ul>
</template>
<script type="text/javascript">
import global_ from 'components/tool/Global'
export default {
 data () {
  return {
   getColor: global_.getRandColor,
   mainList: [
    {
     id: 1,
     img: require('../../assets/rankIcon.png'),
     title: '登录界面'
    },
    {
     id: 2,
     img: require('../../assets/rankIndex.png'),
     title: '主页'
    }
   ]
  }
 }
}
</script>
<style scoped type="text/css">
.projectItem
{
 margin: 5px;
 width: 200px;
 height: 120px;
 /*border:1px soild;*/
 box-shadow: 1px 1px 10px;
}
.projectItem a
{
 min-width: 200px;
}
.projectItem a span
{
 text-align: center;
 display: block;
}
</style>

2、全局变量模块挂载到Vue.prototype 里。

Global.js同上,在程序入口的main.js里加下面代码

import global_ from './components/tool/Global'
Vue.prototype.GLOBAL = global_

挂载之后,在需要引用全局量的模块处,不需再导入全局量模块,直接用this就可以引用了,如下:

<script type="text/javascript">
export default {
 data () {
  return {
   getColor: this.GLOBAL.getRandColor,
   mainList: [
    {
     id: 1,
     img: require('../../assets/rankIcon.png'),
     title: '登录界面'
    },
    {
     id: 2,
     img: require('../../assets/rankIndex.png'),
     title: '主页'
    }
   ]
  }
 }
}
</script>

3、使用VUEX

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。因此可以存放着全局量。因Vuex有点繁琐,有点杀鸡用牛刀的感觉。认为并没有必要。

链接:vuex官方介绍

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

Javascript 相关文章推荐
JavaScript 内置对象属性及方法集合
Jul 04 Javascript
js中eval详解
Mar 30 Javascript
JavaScript设置首页和收藏页面的小例子
Nov 11 Javascript
使用js完成节点的增删改复制等的操作
Jan 02 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
Sep 04 Javascript
js实现异步循环实现代码
Feb 16 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
Apr 29 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
Jul 20 Javascript
VSCode中如何利用d.ts文件进行js智能提示
Apr 13 Javascript
在Vue methods中调用filters里的过滤器实例
Aug 30 Javascript
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 Javascript
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
详解vue过滤器在v2.0版本用法
Jun 01 #Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
Jun 01 #Javascript
js随机生成一个验证码
Jun 01 #Javascript
JS实现简单抖动效果
Jun 01 #Javascript
深入理解vue中的$set
Jun 01 #Javascript
详解angular中的作用域及继承
May 31 #Javascript
Node学习记录之cluster模块
May 31 #Javascript
You might like
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
javascript学习之闭包分析
2010/12/02 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
js 函数性能比较方法
2020/08/24 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
基于DataFrame改变列类型的方法
2018/07/25 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
应届大学生自荐信
2013/12/05 职场文书
大学生收银员求职信分享
2014/01/02 职场文书
安全检查管理制度
2014/02/02 职场文书
出纳员岗位责任制
2014/02/11 职场文书
政协调研汇报材料
2014/08/15 职场文书
毕业证代领委托书
2014/09/26 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis
Python echarts实现数据可视化实例详解
2022/03/03 Python
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技