开发者社区 > 云原生 > 中间件 > 正文

redux异步中间件之间的优劣?

展开
收起
前端问答 2019-12-01 22:29:56 1069 0
1 条回答
写回答
取消 提交回答
  • 前端问答小助手

    redux-thunk优点:

    • 体积⼩: redux-thunk的实现⽅式很简单,只有不到20⾏代码
    • 使⽤简单: redux-thunk没有引⼊像redux-saga或者redux-observable额外的范式,上⼿简单

    redux-thunk缺陷:

    • 样板代码过多: 与redux本身⼀样,通常⼀个请求需要⼤量的代码,⽽且很多都是重复性质的
    • 耦合严重: 异步操作与redux的action偶合在⼀起,不⽅便管理
    • 功能孱弱: 有⼀些实际开发中常⽤的功能需要⾃⼰进⾏封装

    redux-saga优点:

    • 异步解耦: 异步操作被被转移到单独 saga.js 中,不再是掺杂在 action.js 或 component.js 中
    • action摆脱thunk function: dispatch 的参数依然是⼀个纯粹的 action (FSA),⽽不是充满 “⿊魔法” thunk function
    • 异常处理: 受益于 generator function 的 saga 实现,代码异常/请求失败 都可以直接通过 try/catch 语法直接捕获处理
    • 功能强⼤: redux-saga提供了⼤量的Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤
    • 灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤的异步flow
    • 易测试,提供了各种case的测试⽅案,包括mock task,分⽀覆盖等等

    redux-saga缺陷:

    • 额外的学习成本: redux-saga不仅在使⽤难以理解的 generator function,⽽且有数⼗个API,学习成本远超redux-thunk,最重要的是你的额外学习成本是只服务于这个库的,与redux-observable不同,redux-observable虽然也有额外学习成本但是背后是rxjs和⼀整套思想
    • 体积庞⼤: 体积略⼤,代码近2000⾏,min版25KB左右
    • 功能过剩: 实际上并发控制等功能很难⽤到,但是我们依然需要引⼊这些代码
    • ts⽀持不友好: yield⽆法返回TS类型

    redux-observable优点:

    • 功能最强: 由于背靠rxjs这个强⼤的响应式编程的库,借助rxjs的操作符,你可以⼏乎做任何你能想到的异步处理
    • 背靠rxjs: 由于有rxjs的加持,如果你已经学习了rxjs,redux-observable的学习成本并不⾼,⽽且随着rxjs的升级redux-observable也会变得更强⼤

    redux-observable缺陷:

    • 学习成本奇⾼: 如果你不会rxjs,则需要额外学习两个复杂的库
    • 社区⼀般: redux-observable的下载量只有redux-saga的1/5,社区也不够活跃,在复杂异步流中间件这个层⾯redux- saga仍处于领导地位
    2019-12-01 23:45:04
    赞同 1 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
金融分布式中间件分享 立即下载
无需部署的前端中间件技术——企业移动化新思路 立即下载
《云原生中间件精品案例集》 立即下载