大家好,今天这是我们 Bytes by Alfred 的第 3 期。RSS订阅请看 RssHub/zhubai/alfxjx
本期的专题是我最近在学习的响应式编程。
😈 专题
引入新的工具是需要成本和理由的,如果引入一个工具的复杂度能够抵消学习的梯度外加上项目增加的复杂度,那么引入该工具就是有益的。对于 Rxjs 而言,事情可能没那么简单,本期周刊的专题,主要讲一下,为什么我们需要响应式编程,以及一些学习资料。
- 上期介绍了 Rxjs 的30天从入门到精通,今天介绍其中一期,基于 Rxjs 手写一个拖拽,很好的展示了 Rxjs 的威力,通过对事件的声明和订阅,短短20行代码就实现了一个简单的拖拽功能。本文Demo在线演示
- Rxjs 的一个主要应用场景就是做状态管理,可能目前常见的状态管理有 类Flux 架构的各种实现:vuex, pinia, redux …,对于这些诉求,推荐阅读 为什么要做状态管理,文章写的挺对我的胃口,摘录几句
- 好的状态管理应该做到 UI 层独立,并让状态管理的逻辑尽量少侵入到 UI 层。
- 状态管理也有缺点,其实就一点,就是代码会变得更复杂,当然,这一点并不完全是缺点,当一个应用业务用例和代码量不断上升的时候,代码不可能维持简单简洁,如果没有一个的好架构的约束,那么只会演变成大泥潭,但设计出一个好的状态管理方案,那么就可以把复杂度控制在一个合理的范围内,保持架构的整洁。
- 如何用 Rxjs 做状态管理 同样上文作者的一篇示例教程文章,介绍了Reactive Programming (RP)的威力。当然 Rxjs 也有一些问题:事件驱动的一个比较大的弊端是通常耦合比较严重。但是这可能不是Rxjs的问题,而是需要对状态模型进行仔细的设计才能避免出现的耦合。
- RxMarbles 如果你也学习了 Rxjs ,这种顺序图几乎是绕不开的,RxMarbles 是一个 Rx Observables 对象输出顺序的可交互网站,展示不同的API下,最后输出的Rx Observables 的顺序,可以很好的帮助理解。

- Awesome example of combineLatest 一个可视化的绘图demo,很好的展示了事件驱动的模型。
6. Rxjs 页面滚动的一个demo
📖 推荐文章
技术
- Writing Clean JavaScript 介绍了很多如何写出整洁代码的技巧,大家在开发的过程中应该会看到很多设计不当的代码,为了能让自己的产出不要充满坏味道,还是遵守一些整洁代码的规范,这样有助于项目的长期维护。
- Throwable - 在 TypeScript 中类型安全地处理 Error ,在 ts/js 中我们一般通过 throw, try..catch 来处理 error, 但是这种方式无法保证类型安全: 一个 function 无法告诉使用者它可能出现的必须要被处理的问题。这很大程度限制了 lib 开发者的表达能力:因为没处理的 throw 可能会导致应用崩溃,所以在出现无法处理的情况时直接 return undefined 可能是更好的选择。但是我们可以借鉴 Haskell 和 Rust 当中处理异常的方式。这两门语言都没有提供 try…catch 的方法,而是通过一种特殊的函数返回类型来表达异常。
设计
设计师 Alastair Gray 个人网站 https://www.alastairgray.com/,不得不说设计的非常现代。
https://cydstumpel.nl/ 2022 年独立创意开发商 Cyd Stumpel 的作品集。涨涨见识,属于web design 范畴了。
🔧 工具推荐
NocoBase 极易扩展的开源无代码开发平台,一个开源低代码平台。来自电鸭社区的开发者。主打“数据结构”与“使用界面”分离、“系统配置”与“系统使用”分离以及功能即插件
fastify-dx一个基于Fastify 和 Vite 的全栈开发框架,目前正在开发中,大家可以关注一下。 Vite 自从发布以来由于其优秀的速度表现,社区非常火热, Fastify 也是一个注重速度的node 框架,该全栈框架的性能表现值得期待。
https://tweet.pics/ 一个生成 Twitter 配图的小工具(看着挺简单的),但是很实用,可以把不规则的图片都变成正方形,这样看缩略图也很清楚。
https://poet.so/ 是一个图片分享tweet的工具,或许这个才是我想要的东西(
💬 Twitter & Discussions
- 陈一枝你坐下,最近发现的一个UP主,主业是做数据分析的,视频里面通过数据分析和漫画,做了很多很搞笑又很有意思的视频。推荐大家看看。
- 一个 Nx.dev团队的 talk, 讲模块联邦和微前端之间的关系和区别。

👋 写在最后
如果你对我的周刊有什么想法或者对内容的意见和建议,欢迎联系我:
- Alfxjx @GitHub@abandon.work
- 薄墨无痕 @知乎 /@掘金 /@bilibili
- xujianxiang@abandon.work
让我们下期再见!
