04-01 微信群聊天记录整理

#1

依依 12:43 请问大家 一般遇到论坛上有人提问,想替人家解决,怎么快速搭环境?

依依 12:43 我看到这个问题 在回答之前想要自己跑一下代码,然后debug。突然想问一般大神们都是怎么做的?

KpaxQin 12:43 codesandbox

KpaxQin 12:43 jsfiddle

依依 12:44 我看他的这个报错 推测用了ta

依依 12:44 ts

依依 12:44 但是我不确定这个react的版本和别的东西

soda 12:49 这个错很明显,随便用哪个版本应该都可以试出来

soda 12:49 可以用 stackblitz 搭环境

工业聚 15:38

工业聚 15:38 抽空用 callbag 实现了一下,昨天我说的拖拽小球

工业聚 15:38 打包后 6kb 的体积,包含 callbag, wobble, 等库和源码

工业聚 15:43 代码大致风格是:

工业聚 15:44 先把 dom 事件抽象成 start$, move$, end$ 三种 stream

工业聚 15:44 其中 end$ 里叠加了 5 秒后触发,决定最多拖动 5 秒钟事件

工业聚 15:45 在前面的基础上,组织出 coords$ 坐标偏移,time$ 内部定时器,clear$ 结束状态,spring$ 缓动函数等 stream

工业聚 15:46 最后依次消费 stream 里的数据,执行 dom 操作即可

Mot 15:46 看起来很好维护

工业聚 15:48 很多细节要注意,用到了 13 个以上的 api 去处理各种情况

工业聚 15:48 学习成本也不低,而且很多容易出错和丢失性能的地方

工业聚 15:48 callbag-take-until 还有 bug,我另外写了一份来用

工业聚 15:49 callbag 的生态未经充分考验,还没到能“拿来就用”的阶段,拿来就出 bug 的概率比较大

工业聚 15:51 stream 风格,对处理竞态条件(race condition)有点优势

工业聚 15:52 比如做 spring 动画还没完毕,又开始拖拽的处理,只需要修改一处

工业聚 15:54 乍看很好维护,全是流式的,其实未必

工业聚 15:55 当需要修改时,上游和下游都不安全,对上游的 stream 进行修改,需要直到下游的所有消费者的情况

工业聚 15:55 我感觉它跟 finger-tree 类似,可能更适合作为底层来跑,而不是让人手写

工业聚 15:56 封装一个框架或库,规范化 source, sink 和它们的执行顺序,确保可预测

工业聚 15:57 更重要的是,要对 stream 做正确的抽象,对很多普通开发者来说,也是挑战

工业聚 15:58 如果抽象不正确,会有很多隐患。比如隐式地绑定了很多 dom listener,或者没有取消订阅数据,或者意外取消了等等

工业聚 15:59 比如在拖拽小球这种很简单的场景里,也要加 share,对 end 还要加 take(1)

Kirito 15:59 应用层用pipeline很直观,抽象成库其他方式会比较好维护吧

工业聚 16:00 不然 touchstart 就可能绑定多次,touchend 也可能绑定多次,可能没解除绑定等等

工业聚 16:01 缓动函数里,一下子就用到了 4 个概念和操作

工业聚 16:02 sample, combine, latest, source,分别看了它们的 api,也未必能理解它们组合后的效果

工业聚 16:02 我也只是试了一下,仿佛没问题

Mot 16:03 虽然不是很懂 但是函数式编程博大精深

Mot 16:04 理解代码意图 可读性就很高了

Saviio 16:36 不,还是有认知成本的。 而且,场景跟随业务,这里的代码有被业务逻辑劣化的可能,到时候可能就没办法表达的这么直观了。

博深 16:42 你的流里面多加些 api 调用就不知道发生了什么了, 比如到处都是的 concatMap, mergeMap, exhaustMap, forkJoin, takeUntil 揉在一起

博深 16:43 每个模块上面都这么一排, 吓尿

工业聚 16:47 真的是一排

Saviio 16:50 (流的认知成本其实非常高,只是看起来『没那么高』 ,但作为抽象,确实非常棒

工业聚 17:13 parceljs 2.0

工业聚 17:13 parcel v1.0 还没用过,2.0 在计划中

工业聚 17:19 之前看到一篇知乎文章说,flatten -> smoosh 只是一个误会,现在看起来不是,rxjs 跟着改 api 名了

工业聚 17:20 dan 在愚人节宣布 mixins 不再 harmful,而是 future [奸笑]

工业聚 17:20 https://twitter.com/dan_abramov/status/980365369360769024