收集

thoughtworks的技术雷达,可以偶尔关注一下
https://www.thoughtworks.com/radar/languages-and-frameworks?blipid=202010002

Tools

sizzy

一个为移动端快速适配开发的开发者浏览器,很不错
https://sizzy.co/

思考

记录

由于现在大部分是碎片的记录,所以如果真的要吸收,肯定还是要有最终的总结才可以
https://www.bilibili.com/video/BV1Y541187G5
学习是先打碎后重塑的过程

状态管理

XState

finite state machines and statecharts for the modern web.
Js的有限状态机,和状态图
透過 Model-based Testing 我們只需要寫各個狀態下的斷言(assertion)就可以自動把各種狀態切換的路徑都測試完

https://blog.jerry-hong.com/posts/xstate-introduction/

优点

  1. 程式碼即 UI Spec:编码后可生成状态图,不仅可以直观地总览,更可以以此来向他人进行交流;
  2. 寫更少的測試?(成本可能比较高,且不一定靠谱)Model-based Testing,以 Model 为实现核心进行测试,感觉比较美好,可能抵不住来自产品的快乐修改。
  3. 更快速的路徑優化。路径优化的前提是产品能够明白路径真的优化了,

这个库的思路很有趣,因为本质上一个系统中的数据是由各个状态演化后决定的,如果能够精准定义状态的流程,数据的初始,中间态,结果,也就都能被准确描述并监控了。所以基于状态流程生成状态 model,再基于 model 进行测试,完成所有状态的可能性测试,确实至少保证了,数据->状态 状态->数据 的安全可靠。除了一些UI不可状态感知的边界,或者一些状态不定的副作用,似乎真的可行。

Immutable

immutable本质上就是改变对象的项,在对象树结构往上受影响的节点对象都返回一个新对象。
所以单对象使用解构就可以。
复杂对象树,则可以通过一些工具库,本质还是单对象节点的解构赋值。
image.png