03-30 微信群聊天记录整理

#1

LS… 09:21

chenyong 10:02 https://twitter.com/brian_d_vaughn/status/979453097888985090

Janry 10:03 本次更新async render可以用了么

司徒正美 10:09 不可以用

Janry 10:09 [捂脸]

司徒正美 10:09 如果可以用了,那么React17就没有新特征了

Heaven 10:10 「

司徒正美: 如果可以用了,那么React17就没有新特征了 」 - - - - - - - - - - - - - - - 有可能在 16.4 或者 16.5

司徒正美 10:10 React改一点东西就被人骂

司徒正美 10:11 每次改动都很艰难的

Heaven 10:11 改改改,现在门槛太低了

子龙 10:12 门槛高不是好事啊

司徒正美 10:13 门槛高才工资高

司徒正美 10:13 Version 16.3引入了一个新的上下文API,它更高效,同时支持静态类型检查和深度更新。

子龙 10:14 门槛高,公司大规模扩张,就要考虑换方案了

Janry 10:14 这都要拖到17?

司徒正美 10:15 downside是缺点的意思

司徒正美 10:16 forwardRef 同时用上HOC与render props

司徒正美 10:19 React官方说

司徒正美 10:19 在组件时,前面已经有一排方法在干活

司徒正美 10:19 因此不需要componentWillUpdate了

LS… 10:21 [骷髅]大神自己撸了最新新版本出来。厉害

司徒正美 10:53 https://segmentfault.com/a/1190000014083970

Janry 11:08 [应用消息: 知乎]

工业聚 11:17 anu不是已经上了 fiber 了吗?

工业聚 11:52 suspend 还没出来的样子

chenyong 11:52 https://github.com/facebook/react/blob/master/CHANGELOG.md#1630-march-29-2018

chenyong 11:55 https://github.com/reactjs/rfcs/blob/master/text/0002-new-version-of-context.md

司徒正美 11:56 suspend还要公开两个组件: timeout与loading

chenyong 11:57 https://github.com/libin1991/libin_Blog/issues/347

chenyong 11:57 https://github.com/AlanWei/blog/issues/9

工业聚 12:40 Redux - Not Dead Yet! http://blog.isquaredsoftware.com/2018/03/redux-not-dead-yet/

工业聚 12:40 「朕的大清到底完了没有,给个准信」[捂脸]

工业聚 13:21 GraphQL.js: Preparing for v14.0.0 https://medium.com/@leeb/graphql-js-preparing-for-v14-0-0-839f823c144e

工业聚 13:21 GraphQL 跟 React 一样,要从 0.13.x 跃迁到 14.0.x

工业聚 13:52 react-like 里除了 anujs,暂无其它跟进 fiber 架构的,有很多层面的解读

工业聚 13:53 react 13 年底左右开源,react-like 的库在 15年底开始涌现,恰好是 react 进入 v14.0 并且 api 保持兼容的状态

工业聚 13:54 13年底到15年底之间,虽然有 virtual-dom.js ,但没有没看严肃的 react-like 尝试

工业聚 13:54 这期间,react api 也频繁变化,正如现在 react v16

工业聚 13:55 从这个角度解读,可以认为现在处于时候未到,react-fiber 的特性还没稳定,价值还没被充分证明,并非一个跟进的好时机

工业聚 13:55 另一个层面是,react-fiber 架构的复杂性和实现难度

工业聚 13:57 比如,即便是最小化 react-fiber 可能也不小

工业聚 13:57 gzip 之后,相比原版 react 体积优势不显著,那就没意义

工业聚 13:58 比如,react-fiber 让 react 体积已经足够小(react 体积确实变小了),react 自身就更轻量,其他轻量版也失去市场竞争力了

工业聚 13:59 对于 react-like 库来说,也有一个乐观方向。react-fiber 是 react-fiber,基于 react-fiber 的 react public api,未必需要完整的 react-fiber 实现

工业聚 13:59 就像 react 里的 virtual-dom 可能是最庞杂的一个实现一样,fb 里用 react-fiber 实现异步渲染,不代表这是一条唯一的路

工业聚 14:00 不管是悲观方向,还是乐观方向,现在都包含巨大的不确定因素。等 React V16/17 新特性稳定下来,才能准确评估,跟进的难度、意义和价值

dyf 14:02 17这次 我没什么信心升级了

工业聚 14:02 另外一点,js 的体积问题,可以有其它解决之道。比如 SSR, 骨架屏、service-worker 等

dyf 14:03 只能新项目用了

工业聚 14:03 现在不是跟进的时候,可以把精力放到其他性价比更高的事情上。

dyf 14:03 成本太高 没必要

工业聚 14:04 要玩新东西,也有很多,reasonml, wasm, pwa, ssr, isomorphic 等等

dyf 14:04 看能解决什么问题吧,如果收益足够可以去尝试

Janry 14:10 还有callbag[偷笑]

工业聚 14:11 哈哈,immer, callbag 比较技术细节,属于 fp 大方向

工业聚 14:13 两年前我就看到 fb react core team 的人,讨论让 react 接管 UI 布局,试图消除辅助布局的冗余 div,减轻 dom 层级的复杂度,以便提升性能

工业聚 14:13 现在 react 的发展方向,不是这样了,感觉在不断解决它自己创造的问题

工业聚 14:14 比如组件不能 return 数组,组件 render 是同步的等等

dyf 14:15 react 下,div冗余更严重吧[偷笑]

工业聚 14:15 为了解决自己的问题,更加复杂化

工业聚 14:16 这也不是 fp 的路线,fp 是靠小而纯的函数组合来解决大部分问题

工业聚 14:37 我设想了一种做法

工业聚 14:38 jsx -> virtual-ui -> canvas | dom | html

工业聚 14:38 类似 react-canvas 的路线,但不走 react,而是基于 canvas 的渲染特性,重新设计 diff/patches 的机制

工业聚 14:39 ssr 时渲染一个一次性的临时 html,csr 时切换到 canvas 渲染

工业聚 14:40 这样可以写视觉上更有表现力的 UI 组件,有点提前使用 houdini 的意思

工业聚 14:43 diff/patches 时,计算 canvas 里的显示区域,把非显示区域的 render vdom 等过程都去掉(这应该会牺牲部分布局的能力)

工业聚 14:45 布局时,用 vw, vh 等单位应该没问题,提供 pw(parent-width), ph(parent-height) 也不错

工业聚 14:47 这个方案太妖了,很难推,也有点放弃浏览器自身优化,全部自己搞的问题[捂脸]

工业聚 14:47 恐怕最终结果,不如预期

工业聚 14:47 不然 flibbord 后面也不会放弃 react-canvas

司徒正美 14:54 select

司徒正美 14:54 canvas怎么实现input

工业聚 14:56 select 容易模拟,input 跟唤起键盘也有多种模拟策略

工业聚 14:57 比如隐藏一个 input 去触发 focus,或者在 touchstart 到表单时,立刻生成一个真 input 在同一位置

工业聚 14:59 学做 canvas 游戏的人,解决表单输入

Janry 15:00 react的性能问题80%是因为它的单向数据流并没有精确的数据采集跟踪造成很多组件render函数的无效渲染造成的

工业聚 15:05 这事儿还怪不到单项数据流的头上

工业聚 15:06 精准数据采集,也有成本,创建 watch 函数等等

工业聚 15:06 这个问题,跟 js 里没有不可变数据,很难检测变更有关

工业聚 16:43 https://twitter.com/swyx/status/978880884031066112

工业聚 16:56 “getDerivedStateFromProps() is long to type. This is good. You shouldn’t use it that often. If you do, something else is probably wrong.”

Heaven 17:01 很早就说明了这个情况,就是不想让你用故意取这么长

工业聚 17:16 然后编辑器或 IDE 给加上自动补全,敲起来可能比普通名称更快[捂脸]

工业聚 17:16 本来是 didUpdate,变成 cdu + tab -> componentDidUpdate

工业聚 17:16 gds + tab -> getDerivedStateFromProps 刘旸 17:20 可以分享一波 live template 了

仰慕. 17:32 https://hacks.mozilla.org/2018/03/es-modules-a-cartoon-deep-dive/

司徒正美 17:59 https://github.com/RubyLouvre/anu/issues/100

司徒正美 17:59 补充一下anu fiber的一些工作原理

Janry 18:46 callbag可复合能力极强啊

工业聚 18:53 我决定继续学习 Haskell ,增强对函数组合的认知,再回来审视 callbags

Janry 23:32 redux-callbag借助了callbag的双向通信能力,最后一个callbag可以向第一个callbag dispatch消息,这样轻松实现了用户不需要手动调用store.dispatch,感觉还蛮爽的

Janry 23:33 callbag的函数组合能力真的强,感觉这能甩rxjs几条街