详解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 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
Jul 08 Javascript
24款热门实用的jQuery插件推荐
Dec 24 Javascript
JavaScript中document对象使用详解
Jan 06 Javascript
javascript性能优化之DOM交互操作实例分析
Dec 12 Javascript
JS中生成随机数的用法及相关函数
Jan 09 Javascript
JavaScript中对JSON对象的基本操作示例
May 21 Javascript
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 Javascript
JavaScript执行环境及作用域链实例分析
Aug 01 Javascript
原生js实现form表单序列化的方法
Aug 02 Javascript
vue 使用自定义指令实现表单校验的方法
Aug 28 Javascript
Next.js实现react服务器端渲染的方法示例
Jan 06 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/05/08 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
javascript数组详解
2014/10/22 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
python检查URL是否正常访问的小技巧
2017/02/25 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
详解python中__name__的意义以及作用
2019/08/07 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
python爬虫请求头的使用
2020/12/01 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
高中生学习生活的自我评价
2013/11/27 职场文书
小学二年级评语
2014/04/21 职场文书
企业活动策划方案
2014/06/02 职场文书
作风建设整改方案
2014/10/27 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书