详解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 相关文章推荐
改善用户体验的五款jQuery插件分享
May 22 Javascript
javascript实现的固定位置悬浮窗口实例
Apr 30 Javascript
可以浮动某个物体的jquery控件用法实例
Jul 24 Javascript
Node.js静态文件服务器改进版
Jan 10 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
Apr 29 Javascript
Node.js中 __dirname 的使用介绍
Jun 19 Javascript
JavaScript数组排序reverse()和sort()方法详解
Dec 24 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
jQuery实现轮播图源码
Oct 23 jQuery
vue 子组件watch监听不到prop的解决
Aug 09 Javascript
原生js实现俄罗斯方块
Oct 20 Javascript
详解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的一些基础知识分享
2011/07/27 PHP
PHP数据类型的总结分析
2013/06/13 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
php时间函数用法分析
2016/05/28 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
python实现合并两个数组的方法
2015/05/16 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
利用python循环创建多个文件的方法
2018/10/25 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
python中可以声明变量类型吗
2020/06/18 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
如何填写个人简历自我评价
2013/12/10 职场文书
家长对小学生的评语
2014/01/28 职场文书
综合实践活动总结
2014/05/05 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
幼儿园感谢信
2015/01/21 职场文书
迟到检讨书范文
2015/01/27 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
Python字符串格式化方式
2022/04/07 Python