从0开始探究vue-公共变量的管理
背景
在Vue项目中,我们总会遇到一些公共数据的处理,如方法拦截,全局变量等,本文旨在解决这些问题
解决方案
事件总线
所谓事件总线,就是在当前的Vue实例之外,再创建一个Vue实例来专门进行变量传递,事件处理,管理回调事件等
//main.js中
Vue.prototype.$bus = new Vue();
new Vue({...})
//页面一
this.$bus.$on('sayName',(e)=>{
    alert('我的名字是',e)
})
//页面二
this.$bus.$emit('sayName','小明');//我的名字是 小明
原型挂载
所谓原型挂载,就是在main.js中将公共变量,事件,都挂在到Vue原型上
//main.js
Vue.prototype.$globalData = {}
Vue.prototype.$sayName = function(e){
    console.log('我的名字是',e)
}
new Vue({...})
//组件一
Vue.prototype.$globalData.name='小明';
this.$sayName('小王');//我的名字是小王
//组件二
console.log(this.$sayName.name);//小明
this.$sayName('小王');//我的名字是小王
vuex
Vuex是Vue提供的一种,专门用来管理vue中的公共状态,事件等等,以应用登录为例
//新建store.js
import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
Vue.use(Vuex)
export default new Vuex.Store({
  state: {//此处为公共变量
    userId:"",//用户Id
    loginSession:""//用户登录凭证
  },
  mutations: {//此处为同步方法
    setLoginSession(state,loginSession){//存入state中的用户凭证
        state.loginSession = loginSession;
    },
    setUserId(state,loginSession){//存入state中的用户凭证
        state.loginSession = 'user_'+Math.floor(Math.random()*100000000000);
    }
  },
  actions: {//此处为异步方法
    getUserId({state,commit},options={}){//从服务器取登录凭证,然后返回是否登录状态
        return new Proise((resolve)=>{//返回一个promise对象,来让调用者可以使用.then来进行下一步操作
            axios.get('api').then((res)=>{
                commit('setLoginSession',res.data.loginSession)
                resolve(this.getters.isLogin)
            })
        }))
    }
  },
  modules: {//此处为混入更多的vuex小模块
  },
  gatters: {//此处为计算变量
      isLogin(){
          return (this.userId&&this.loginSession)?true:false
      }
  }
})
//main.js中注入vuex
import store from './store/store.js'
Vue.prototype.$store = store;
//app.vue中
export default {
    data(){
        return {}
    },
    mounted(){
        this.$store.commit('setUserId');//设置用户Id
        this.$store.dispatch('getUserId').then((result)=>{//查询登录凭证,并返回登录结果
            console.log(this.$store.getters.isLogin,result);//true  true  此处也可以查看计算属性中的是否登录状态
            if(result){
                alert('登录了')
            }else{
                alert('未登录')
            }
        });
    }
}
从0开始探究vue-公共变量的管理的更多相关文章
- 从0开始探究vue-组件化-组件之间传值
		理解 Vue中有个非常重要的核心思想,就是组件化,组件化是为了代码复用 什么是组件化 组件化,就像一个电脑主机里的主板,有内存条的插口,有硬盘,光驱等等的插口,我们的项目,就像一个电脑主机,通过各种组 ... 
- 如何在vue中全局引入stylus文件的公共变量
		新建 一个公共的stylus公共文件添加公共变量,如下: 修改下图圈出的文件: 具体的修改如下: // generate loader string to be used with extract t ... 
- 随机跳转页面之使用VBA公共变量
		p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ... 
- C# 引用类型公共变量的影响
		public int[] a =new int[2]; private void button1_Click(object sender, EventArgs e) { bing(a); } priv ... 
- 从0开始搭建vue+webpack脚手架(二)
		接着从0开始搭建vue+webpack脚手架(一) 三.配置webpack-dev-server 1. webpack-dev-server自带一个node的服务器, 项目在服务端运行的同时可以实现热 ... 
- m_Orchestrate learning system---三十三、公共变量多弄成全局变量
		m_Orchestrate learning system---三十三.公共变量多弄成全局变量 一.总结 一句话总结:比如班级id,小组id,这样省事,而且减少数据库的访问,加快访问速度,而且节约代码 ... 
- 最齐全的vue公共函数给你们放出来啦
		import Vue from 'vue' /* 配置参数 */Vue.prototype.winH = document.documentElement.clientHeight; Vue.prot ... 
- less的引用及公共变量的抽离
		一.什么是less? less是什么自然不用多言,乃一个css预编译器,可以扩展css语言,添加功能如如允许变量(variables),混合(mixins),函数(functions) 和许多其他的技 ... 
- C#-WebForm-★内置对象简介★Request-获取请求对象、Response相应请求对象、Session全局变量(私有)、Cookie全局变量(私有)、Application全局公共变量、ViewState
		内置对象: 1.Request - 获取请求对象 用法:接收传值 protected void Page_Load(object sender, EventArgs e) { TextBox1.Tex ... 
随机推荐
- Mahout聚类和kafaka相关知识
			1.说几种距离测度Mahout: 欧式距离测度:平方欧式距离测度:曼哈顿距离测度:余弦距离测度:加权距离测度 2.K-means算法参数: 
- uniapp自定义简单弹窗组件
			2.0(2019-08-31) 船新版本的信息弹窗组件 插件市场地址:http://ext.dcloud.net.cn/plugin?id=672 可以弹出很多条信息,并单独控制消失时间.点击消失. ... 
- thrift的使用
			简介 thrift 原来是facebook的rpc框架,根据数据结构和接口描述生成多种语言的接口,方便使用多种语言进行开发,详细信息这里不再赘述,下文以一个简单的代码(C++)示例来介绍使用方法. 示 ... 
- linux输入输出、重定向、管道
			本篇讲述linux系统的输入输出.管道和重定向. 1. liunx的输入输出 一个linux系统要想发挥作用,就要有输入输出,这样才可以与外界交互. 类型 设备文件名 文件描述符 设备名称 说明 备注 ... 
- 帝国cms 批量替换 字段内容包含的 指定的 关键字 SQL命令
			帝国cms 批量替换 字段内容包含的 指定的 关键字update phome_ecms_news_data_1 set newstext=replace(newstext,'原来','现在'); 
- 更加灵活的参数校验,Spring-boot自定义参数校验注解
			上文我们讨论了如何使用@Min.@Max等注解进行参数校验,主要是针对基本数据类型和级联对象进行参数校验的演示,但是在实际中我们往往需要更为复杂的校验规则,比如注册用户的密码和确认密码进行校验,这个时 ... 
- 暴力破解-HTTP Basic认证
			0x01 HTTP Basic认证介绍 基本认证 basic authentication ← HTTP1.0提出的认证方法 基本认证步骤: 1. 客户端访问一个受http基本认证保护的资源. 2. ... 
- python函数总结,你值得拥有
			目录 函数总结 函数定义与结构 函数名的使用 函数的参数 名称空间与作用域 名称空间 作用域 函数嵌套 内置函数(globals( ),locals( )) global+nonlocal 可迭代对象 ... 
- Flask开发技巧之异常处理
			Flask开发技巧之异常处理 目录 Flask开发技巧之异常处理 1.Flask内置异常处理 2.HTTPException类分析 3.自定义异常处理类 4.方便的定义自己的错误类 5.注意事项 本人 ... 
- json和数组
			接触数组: 1.数组的定义方法 var arr = [1,2,3,4,5]; var arr = new array();此处括号内可以填写数组的元素,或者直接填写元素的个数.2.数组中各 ... 
