复杂Web应用的状态管理.PDF

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
复杂Web应用的状态管理

复杂 WEB 应用的 状态管理 挖了个大坑 我是谁?我在说什么? 应用规模增大,逻辑愈发复杂 展示逻辑与数据逻辑分离 单独维护的数据逻辑 状态管理 单页应用的数据流方案探索 /xufei/ blog/ issues/47 知乎大 V ,前端网红 重磅力作 有这样一个问题 从前没人讨论状态管理的时候 我们的应用是没有状态的吗? 应用的状态在组件树的每一个节点里 在 React 的 Component 里 在 Angular 的 Controller 里 在 Vue 的 Component 里 还有一些流落在 service 里,甚至 utils 里 Local State ,也就是 State in Component 不好吗? Application Application Sidebar Main Navbar UserInfo Products Routes Product Breadcrumb ... Product A Product B ... List View 与 Model 的逻辑分布不等同 状态数据的拓扑关系依赖界面组件的拓扑关系 越做越没法做 那就全部拿出来 彻底解耦 吼啊 ! - Redux Local state is ne. - Redux 作者 所以不仅要搞 Local / Component State , Global / Shared State 我们也要搞 那么问题来了 状态管理怎么搞 组合与复用逻辑的能力 Single Source Of Truth 调试与测试 组合与复用逻辑的能力 数据可组合 数据转换逻辑可复用 Single Source Of Truth Single Source Of Truth != Single Store 关键是数据推导的能力 要么只存一份数据,用时计算/推导 要么存在多份数据,但由同一份数据 (自动)推导得到 Flux 是怎么被黑的 调试与测试 Command Query Responsibility Segregation, CQRS Event Sourcing, ES Action/ Message/ Event - Update/ Reduce 利用调用栈 限制 管理副作用 限制 管理副作用 为什么要限制 管理 依赖运行环境 影响运行环境 不可重入、不易验证、不易模拟 如何限制 管理 禁止私下搞事情 Effect as data React: View as data 验证描述行为的数据,并不真的执行 -- UPDATE type Msg Input String | Send | NewMessage String update : Msg - Model - (Model, Cmd Msg) update msg {input, messages} case msg of Input newInput - (Model newInput messages, Cmd.none) Send - (Model messages, WebSocket.send ws:// input) NewMessage str - (Model input (str :: messages), Cmd.none) -- SUBSCRIPTIONS subscriptions : Model - Sub Msg

文档评论(0)

zhuwo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档