history
终端性能+网速MVC
backbone(路由在前端)—— https://github.com/jashkenas/backboneMVVM(由state决定UI)
- UI层和数据层的绑定
组件间数据通讯
- 业务数据|状态数据(和UI相关)
- react - 木偶组件 - Element/AntDesign
- 跨组件的状态数据 - 三级联动 - 机制=>父子和兄弟通信
- 父子=>props 子父=>react(处理函数) 兄弟 => 父子,子父问题的结合
组件间数据通信加强版(eventbus)
- 额外的全局对象(可以加一些事件,log)
单向数据流(redux & vuex)
- 组件是树状结构,但是eventbus是网状结构
- flux => 核心是store(状态管理方法论)=> 单向数据流方案
- redux => state应该被保存在单个store中 && state不能被直接更改,只能通过触发action改变 && pure function(reducer来处理数据修改逻辑,不依赖于全局变量,只依赖于传入的参数,不修改传入的参数,返回的是一个全新的对象)
- 严格,限制
- immutable
- 使用一定有场景=>解决问题
- 中间件(大逻辑的拆分)—— 异步放在了中间件处理
- https://cn.vuejs.org/v2/guide/state-management.html#%E7%AE%80%E5%8D%95%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86%E8%B5%B7%E6%AD%A5%E4%BD%BF%E7%94%A8
MobX —— https://mobx.js.org/README.html
- Reactive,响应式数据流方案,MobX是代表
- observable state / actions / computeds / reactions
- 面向事件的设计|面向数据的设计
异步数据和rxjs
- teambition(https://www.teambition.com/)
- 大量相互依赖的异步数据 => 对复杂的部分抽个中间层处理 => 也没有根本解决问题
- https://zhuanlan.zhihu.com/p/23305264
- https://www.lilnong.top/static/pdf/B-4-RxJS%E5%9C%A8React%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8-%E9%BE%99%E9%80%B8%E6%A5%A0_.pdf
- 期望长期稳定的异步流程
- reactive/lodash for events/observable/stream-based
- rxjs - 钉钉桌面端 - 用rxjs 的Observable可以更好的描述(渐进式业务及需要cancel的异步API),减少复杂的异步API调用中少犯错
- 渐进式业务(搜索|文件上传下载|profile详情-基本->完整)
应用场景=>需要优化的问题(imperative?no => more 流程化)
组件间/组件对端/组件对数据层/数据层和端 关系处理
很多实时更新的数据?
- 做个截流层(node/前端框架)
- 保证进入缓存层的数据可控
模块的拆分 => 基于工程实践,逐步抽象
数据管理:前端/后端 差异
token可以本地持久化存,数据前端肯定不能明文存
参考阅读:
dva(React应用框架) = React-Router + Redux + Redux-saga(将这三个React工具库保证在一起,简化了API)
dva之入门课:
- React没有解决的问题
- 通信问题
- 数据流问题
- 目前流行的数据流方案
文档还是值得读一读的,讲了为什么,怎么实现的
方法论总结:
补:最近又熟悉了一门语言和对应的应用的生态,当然,也离不开状态的管理;对于第三方或者官方提供的状态管理工具,了解的时候可以分为一下几个方面:
- 解决了什么问题,应用的场景是什么
- 横向比较,和同类比起来,好处和坏处
- 基本机制,核心思想
- 关注下作者和库的动态(如果觉得还不错的话)
- 跑下demo,用一用,能解决的问题会产生的问题也就都出来了;