详解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 相关文章推荐
一个多次搜索+多次传值的解决方案
Jan 20 Javascript
JavaScript之自定义类型
May 04 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
js弹窗返回值详解(window.open方式)
Jan 11 Javascript
基于jquery实现表格无刷新分页
Jan 07 Javascript
JS简单去除数组中重复项的方法
Sep 13 Javascript
IE8兼容Jquery.validate.js的问题
Dec 01 Javascript
JavaScript用构造函数如何获取变量的类型名
Dec 23 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
Apr 26 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
Sep 21 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新手上路(六)
2006/10/09 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
node.js基础知识汇总
2020/08/25 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
python中argparse模块用法实例详解
2015/06/03 Python
Python排序算法实例代码
2017/08/10 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
大专毕业生自我鉴定
2013/11/21 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
自我推荐信怎么写
2015/03/24 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android