Vuex 是什么?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension

(opens new window),提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。

# 什么是“状态管理模式”?

让我们从一个简单的 Vue 计数应用开始:

new Vue({// statedata () {return {count: 0}},// viewtemplate: `<div>{{ count }}</div>`,// actionsmethods: {increment () {this.count++}}
})

这个状态自管理应用包含以下几个部分:

  • state,驱动应用的数据源;
  • view,以声明方式将 state 映射到视图;
  • actions,响应在 view 上的用户输入导致的状态变化。

以下是一个表示“单向数据流”理念的简单示意:

但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:

  • 多个视图依赖于同一状态。
  • 来自不同视图的行为需要变更同一状态。

对于问题一,传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。对于问题二,我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护的代码。

因此,我们为什么不把组件的共享状态抽取出来,以一个全局单例模式管理呢?在这种模式下,我们的组件树构成了一个巨大的“视图”,不管在树的哪个位置,任何组件都能获取状态或者触发行为!

通过定义和隔离状态管理中的各种概念并通过强制规则维持视图和状态间的独立性,我们的代码将会变得更结构化且易维护。

这就是 Vuex 背后的基本思想,借鉴了 Flux

(opens new window)、Redux (opens new window) 和 The Elm Architecture

(opens new window)。与其他模式不同的是,Vuex 是专门为 Vue.js 设计的状态管理库,以利用 Vue.js 的细粒度数据响应机制来进行高效的状态更新。

如果你想交互式地学习 Vuex,可以看这个 Scrimba 上的 Vuex 课程

(opens new window),它将录屏和代码试验场混合在了一起,你可以随时暂停并尝试。

# 什么情况下我应该使用 Vuex?

Vuex 可以帮助我们管理共享状态,并附带了更多的概念和框架。这需要对短期和长期效益进行权衡。

如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。一个简单的 store 模式

(opens new window)就足够您所需了。但是,如果您需要构建一个中大型单页应用,您很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。引用 Redux 的作者 Dan Abramov 的话说就是:

前端学习(2623):Vuex初步识别相关推荐

  1. 前端学习梳理——wsdchong

    前端学习梳理 前言 最近学习了一部分前端内容,今天重新梳理一下. 主要借鉴的书有<前端技术架构与工程>.<大前端入门指南>.<vue.js从入门到项目实战>.< ...

  2. js怎么在一个div中嵌入另一网站_好程序员web前端学习路线分享HTML5常见面试题集锦一...

    好程序员web前端学习路线分享HTML5常见面试题集锦,接下来将会持续为大家分享几篇HTML5常见面试题. 1.布局 左边20% 中间自适应 右边200px 不能用定位 答案:圣杯布局/双飞翼布局或者 ...

  3. 前端学习资料及路线名称网站

    IT前端学习资料及路线 名称 网站 JQuery文件网 https://code.jquery.com/jquery/ jQuery手册(pc端) http://jquery.cuishifeng.c ...

  4. 前端共享桌面_2020 前端学习路线总结,哎呦,不错哦!

    2020 前端学习路线总结 在 GitHub 看到一个很不错的前端学习路线图(roadmap),从前端基础到前端工程化,再到跨端,都有知识点的覆盖,非常推荐阅读. 图下面是我翻译的一个文字版,可以先看 ...

  5. web前端学习之HTML

    html标记语言是网页自动化测试所必须要掌握的,可以说是前端学习的基石,我都是在w3school上学的,所以就以此来讲.学习地址:http://www.w3school.com.cn/ HTML 指的 ...

  6. 2020 前端学习路线总结,哎呦,不错哦!

    2020 前端学习路线总结 在 GitHub 看到一个很不错的前端学习路线图(roadmap),从前端基础到前端工程化,再到跨端,都有知识点的覆盖,非常推荐阅读. 在前端领域混了这几年,总结了一套前端 ...

  7. 资深前端开发工程师分享:关于前端学习路线的一些建议

    前言 对于刚开始学习前端的伙伴俩说,问得最多的问题就是 --前端技术现在如此繁杂,我到底应该如何学习.这个话题太大了,几句话回答不好:也由于这个问题确实困扰了很多前端开发人员,所以我也就着手系统的输出 ...

  8. 2021 年前端学习路线总结

    下面是我翻译的一个文字版,可以先看图再看文字. ✅ 表示个人推荐学习 ✳️ 表示可选择学习 ❇️ 表示不需要严格按照路线的先后顺序,可在任何时间补充这一块的知识 ❎ 表示个人不再推荐 计算机网络 掌握 ...

  9. 关于前端学习路线的一些建议(值得零基础拥有)

    前言 对于刚开始学习前端的伙伴俩说,问得最多的问题就是 --前端技术现在如此繁杂,我到底应该如何学习.这个话题太大了,几句话回答不好:也由于这个问题确实困扰了很多前端开发人员,所以我也就着手系统的输出 ...

最新文章

  1. 设计模式=相似模式区别
  2. C++中的三种继承public,protected,private(转)
  3. bvp解算器是什么_那些学习了编程的中学生,为什么会更可能成功?
  4. android fragment界面滑动切换效果,Android App中使用ViewPager+Fragment实现滑动切换效果...
  5. iOS-BMK标注覆盖物
  6. 目前市场上的电脑一体机从计算机种类,电脑一体机发展方向是什么?
  7. ORA-01502 state unusable错误成因和解决方法[转]
  8. 没有找到站点_为了在家Coding,我搜集了海量的远程站点,然而...
  9. 程序员的身价取决于手中产品
  10. mysql拷贝目录迁移方案_mysql 直接拷贝data 目录下文件 进行数据库迁移时遇到的一些问题??...
  11. PDF虚拟打印机的功能详解和使用方法
  12. XMind中文破解版
  13. 学习React基本渲染数据操作(-)
  14. 淘宝网上一买卖精彩对话
  15. Python:体脂计算
  16. 使用量产工具修复U盘教程
  17. 二级下拉菜单布局(纵向、横向)
  18. 最薄翻转笔记本 联想Yoga13-IFI 6700
  19. 手把手教大家实现一个电子签名
  20. upupoo启动不了 mysql_【upupoo动态桌面壁纸和MySQL API 中文手册哪个好用】upupoo动态桌面壁纸和MySQL API 中文手册对比-ZOL下载...

热门文章

  1. ActiveReports 报表控件V12新特性 -- 新增JSON和CSV导出
  2. Python开发利器之UliPad
  3. 选项卡的制作和注意要点
  4. x=a%pq与x=a%p,x=a%q的关系(pq互质)
  5. Axure RP 8.0正式版下载地址 安装和汉化说明
  6. 【蓝桥杯】历届试题 错误票据
  7. 判断字符串中有多少汉字
  8. delphi XE4 隐藏程序在任务管理器和隐藏任务栏
  9. javascript对象包含哪些要素_让人迷糊的JavaScript对象(Object一)
  10. android安卓系统2.3 使用说明书,Android2.3操作界面