玩转 Vue 3 全家桶
大圣
前百度前端架构师
38321 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
玩转 Vue 3 全家桶
15
15
1.0x
00:00/00:00
登录|注册

10 | 数据流:如何使用Vuex设计你的数据流

数据管理原则
使用数据源
注册数据源
创建数据存储
数据管理框架 Vuex
响应式数据
全局变量的问题
共享数据的场景
组件化开发
思考题
Pinia
手写迷你的Vuex
Vuex的新概念
数据管理
Vuex的概念
下一代状态管理框架
解决 Vuex 的问题
Pinia
思考题
数据管理需求
Vuex的逻辑
异步任务处理
使用 getters
Vuex的原理
使用迷你的Vuex
创建 Store 类
数据转换为响应式
创建 store 变量
使用 Vuex
项目中的大管家
类比公司的办公用品管理
管理项目数据
路由
数据
组件
总结
下一代Vuex
Vuex实战
手写迷你Vuex
Vuex是什么
前端数据管理
数据流:如何使用 Vuex 设计你的数据流

该思维导图由 AI 生成,仅供参考

你好,我是大圣,欢迎进入课程的第 10 讲。
前面的基础入门篇中的几讲,都是针对 Vue 本身的进阶内容。通过这几讲,我们巩固和进阶了 Composition API、组件化和动画等关键知识,Vue 本身的知识点已经掌握得差不多了。那么从这一讲开始,我们进入课程的全家桶实战篇。
在全家桶实战篇,我们将一同学习 Vue 3 的生态,包括 Vuex、vue-router、Vue Devtools 等生态库,以及实战开发中需要用到的库。这⼀模块学完,你就能全副武装,应对复杂的项目开发也会慢慢得心应手。
今天,我先来带你认识一下 Vue 全家桶必备的工具:Vuex,有了这个神兵利器,复杂项目设计也会变得条理更清晰。接下来,让我们先从 Vuex 解决了什么问题说起。

前端数据管理

首先,我们需要掌握前端的数据怎么管理,现代 Web 应用都是由三大件构成,分别是:组件、数据和路由。关于组件化开发,在前面的第 8 讲中,已经有详细的讲解了。这一讲我们思考一个这样的场景,就是有一些数据组件之间需要共享的时候,应该如何实现?
解决这个问题的最常见的一种思路就是:专门定义一个全局变量,任何组件需要数据的时候都去这个全局变量中获取。一些通用的数据,比如用户登录信息,以及一个跨层级的组件通信都可以通过这个全局变量很好地实现。在下面的代码中我们使用 _store 这个全局变量存储数据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Vuex是一个用于管理前端数据流的框架,本文深入浅出地介绍了Vuex的设计和使用。作者首先解释了前端数据管理的重要性,以及使用全局变量和响应式数据的问题。随后详细介绍了Vuex的作用和意义,将其比喻为项目中的大管家,用于集中式存储管理应用的所有组件的状态。文章演示了如何使用Vuex,包括安装、创建数据存储、注册数据源以及在组件中使用。作者还提出了何时使用Vuex管理数据,何时使用组件内部的ref管理数据,并给出了明确的答案。此外,文章手写了一个迷你的Vuex实现,通过提供代码示例展示了其原理和用法。另外,文章还介绍了下一代的Vuex——Pinia,以及对TypeScript的支持。总的来说,本文为读者提供了全面的学习指南,让读者对Vuex有了更深入的了解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《玩转 Vue 3 全家桶》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(59)

  • 最新
  • 精选
  • ll
    置顶
    非常棒的一节,在学习内容的过程中,我也在回顾之前学习关于 Vuex 的知识,在写miniVuex 的实现的代码后,对组件化有了新的认识,简单说下体会。 “组件化” 是解决“复杂”问题的重要思想。其实现就是一个个“组件”,即使表现方式不同,核心还是 MVX 的模型。 这样理解,组件内的 state 就是 model,渲染出来的“图形”就是 view,而这个 X 是这 model 与 view 的“沟通方式”,它可以是 control,也可以是 view model,大概就这个意思。这里要注意,model 和 view 不应该直接沟通。 我们现在的工作就是在“搭积木”,怎么搭很重要,但是了解手中的“积木”也同样重要。 Vue2 提供的积木有 MVX(一般组件),VX(函数式组件),MX(vuex);而 Vue3 通过 CompositionAPI 提供了 M,一个只有 M 的“组件”,也是Vue3灵活原因之一。 到这,我发现,其实 Vuex 也是组件,没有 View 的组件,有 Model(state),有 X(mutation,action),它的逻辑和其他组件一样,想要变更“状态”,必须通过X。就这样“管家”诞生了。 可是具体这个是怎么实现的? 大概说下几个API:install,provide,use 等,大圣讲的很清楚,回头多看几遍,最主要的是多写写。

    作者回复: 精品回复!!赞赞赞

    2021-11-08
    2
    36
  • 一个小🍎
    我Vuex4都还没学完,Pinia就出来了,学不完了。 (话说想请教大圣老师,在前端技术发展如此之快的情况下,我们应该如何做取舍呢?)

    作者回复: 只学成熟的技术就可以了,不需要过于追热点,Pinia和Vuex也是有很多概念和理念是一脉相承的

    2021-11-08
    23
  • 乐叶
    constructor(options) { this._state = reactive({ // data: options.state data: options.state() }) this.mutations = options.mutations } get state() { return this._state.data } options.state这样写使用调试发现获取到的是函数 options.state()写成这样才可以正常运行

    作者回复: 是的是的,第一部分实战代码在这里呀,欢迎遇见bug了提pr呀 https://github.com/shengxinjing/geektime-vue-course

    2021-11-08
    5
    16
  • Geek_4578dc
    建议大圣老师把每节的代码放出来,这样有利于阅读

    作者回复: 第一部分实战代码在这里呀,欢迎遇见bug了提pr呀 https://github.com/shengxinjing/geektime-vue-course

    2021-11-08
    7
  • 也許有一天
    我们公司导入rxjs来取代vuex,不得不说rxjs是真的猛...

    作者回复: rx确实是数据管理的王牌框架,上手成本也是有一些

    2021-12-05
    6
  • 深蓝
    状态管理感觉是前端代码的核心,其他所有组件,监听数据流的变化,或改变数据,然后与这个数据流相关的页面组件作出响应变化,动态菜单,导航栏,以及主页面的组件就随之改变了,整个Web服务就动起来了,最近几天vuex 看的有点晕,有个地方有点疑惑 1 vue < script> computed </script> 2 vuex 也有 getters 两者都是计算属性,这里绕来绕去,还是理不清这里怎么使用最好?

    作者回复: getters是vuex内部的computed,或者你也可以一把梭全部都用computed,如果vuex中有的计算结果需要多次复用,就从computed移到getter中

    2021-11-20
    4
  • 醉月
    大圣老师Pinia会有涉及吗

    作者回复: 最后会有涉及的,毕竟是未来的vuex

    2021-11-08
    4
  • uncle 邦
    count 不是使用 ref 直接定义,而是使用计算属性返回了 state.state.count,也就是刚才在 src/store/index.js 中定义的 count。这个 " state.state.count" 是不是要改成 “store.state.count”

    作者回复: 感谢提示这个错别字,已经提交给编辑 第一部分实战代码在这里呀,欢迎遇见bug了提pr呀 https://github.com/shengxinjing/geektime-vue-course

    2021-11-08
    3
  • Mercurywithu
    请问下大圣老师。install 方法为什么会在main.js入口处app.use(store)的时候,执行这个函数调用。是内置的api么、

    作者回复: 对,这个是vue内部插件的书写方法,可以看下use函数的源码 https://github.com/vuejs/vue-next/blob/master/packages/runtime-core/src/apiCreateApp.ts#L219

    2022-01-15
    2
  • xiaxiaxiaxia
    为什么在代码示例里总是省略那么多你觉得我们都会懂的代码呢。。。。对新手一点也不友好。。。

    作者回复: 你好,非常抱歉对你造成困扰,是哪一部分你觉得不太友好呢?我后面可以加上一些

    2021-12-22
    2
收起评论
显示
设置
留言
59
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部