深入vuex原理(上)
栏目: JavaScript · 发布时间: 6年前
内容简介:vuex作为vue生态的重要组成部分,是对store进行管理的一柄利剑。简而言之,vuex是vue的状态管理器。使用vuex可用使数据流变得清晰、可追踪、可预测,更可以简单的实现 类似时光穿梭 等高级功能,对于复杂的大型应用来讲,vuex将变得尤为重要,对于 store的切分、store的module化、store的变更、store的追踪 等等 store的管理工作,使用vuex 管理store会大大提高项目的稳定性,扩展性!本篇将通过vuex的源码对vuex 的设计以及实现原理 进行剖析!注:本篇文章只展
vuex作为vue生态的重要组成部分,是对store进行管理的一柄利剑。简而言之,vuex是vue的状态管理器。使用vuex可用使数据流变得清晰、可追踪、可预测,更可以简单的实现 类似时光穿梭 等高级功能,对于复杂的大型应用来讲,vuex将变得尤为重要,对于 store的切分、store的module化、store的变更、store的追踪 等等 store的管理工作,使用vuex 管理store会大大提高项目的稳定性,扩展性!本篇将通过vuex的源码对vuex 的设计以及实现原理 进行剖析!
注:本篇文章只展示关键核心代码,一来由于篇幅原因,二来展示核心代码更容易让人理解!再者,本篇属于 vuex 高级篇,对于本篇章中 涉及的 vue 相关的机制 以及 vuex的 高级使用 等 不进行过多赘述!请自行前往官网查看!
准备
浅析vuex的构成
vuex 引入 State 、 Getter 的概念对状态进行定义;使用 Mutation 和 Action 对状态进行变更;引入 Module 对状态进行模块化分割;引入插件对状态进行快照、记录、以及追踪等;提供了 mapState、mapGetters、 mapActions、 mapMutations 辅助函数方便开发者在vm中处理store。具体构成关系如下:
浅析vuex的使用
vuex的使用方式很简单,具体使用细节请参见vuex官网,本文为了剖析源码方便,只进行简单介绍!我们只需要利用vue的use机制将 实例化后的store对象 注入vue实例即可!如下图:
核心代码如下:
Vue.use(Vuex); // 1. vue的插件机制,安装vuex
let store = new Vuex.Store({ // 2.实例化store,调用install方法
state,
getters,
modules,
mutations,
actions,
plugins
});
new Vue({ // 3.注入store, 挂载vue实例
store,
render: h=>h(app)
}).$mount('#app');
复制代码
对vuex的疑问
我们在使用vuex对store进行管理的同时,不禁会问:
- vuex的store是如何注入到组件中的?
- vuex的state 和 getter 是如何映射到 各个组件实例中自动更新的?
本篇章旨在解决以上疑问,让我们一起深入vuex的原理,揭开vuex的神秘面纱吧!
探秘原理
本部分将针对以上疑问,通过源码分析,剖析核心代码,对问题进行解答。
疑问:vuex的store是如何注入到组件中的?
要解答这个问题,我们先从vuex的使用表象上着手,从上面的介绍我们知道,使用vuex之前我们要对vuex进行安装!核心代码如下:
Vue.use(Vuex); // vue的插件机制,安装vuex插件 复制代码
源码分析
上面的代码得益于vue的插件机制,会在调用vuex的 install方法时,装载vuex! 所以我们直接关注 install方法的实现,其核心代码如下:
Vue.mixin({ beforeCreate: vuexInit });
复制代码
可见,store注入 vue的实例组件的方式,是通过vue的mixin机制,借助vue组件的生命周期 钩子 beforeCreate 完成的。即 每个vue组件实例化过程中,会在 beforeCreate 钩子前调用 vuexInit 方法。下面,我们将焦点聚焦在 vuexInit 函数。 下面为 vuexInit 的核心代码!
this.$store = typeof options.store === 'function'
? options.store()
: options.store
复制代码
该代码的核心问题是this的指向,得益于mixin机制,this将指向 vue组件实例!最终,我们可以再 vue组件实例上获得vuex 的store 对象的引用 $store!图示如下:
分析至此,我们已经得出该问题的答案!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms Unlocked
Thomas H. Cormen / The MIT Press / 2013-3-1 / USD 25.00
Have you ever wondered how your GPS can find the fastest way to your destination, selecting one route from seemingly countless possibilities in mere seconds? How your credit card account number is pro......一起来看看 《Algorithms Unlocked》 这本书的介绍吧!