302021.4

在 webworker 中运行 react virtual dom

在一次内部分享会中,我表达了可以把 react 的 virtual dom 那一套全部放到 webworker 中,这样就可以避免在主线程进行计算量很大的 diff 操作,一方面节省主线程的计算消耗提升性能,另一方面也不需要再去构建 react 的 scheduler 做那么复杂的协程工程。大致意思就是,在主线程只做 DOM 操作,而 DOM 的操作,全部由 worker 线程发送消息到主线程完成。在 worker 中计算得到 patches,发送到主线程,由主线程的程序完成 patch,也就是在主线程中,只存在 DOM 操作,不存在计算过程。其中比较重要的一点,是事件响应问题。当用户在界面上做了一次点击后,需要发送一个 event 消息到 worker 中,然后由 worker 中构建的一套事件处理系统完成事件响应和接下来的 diff,将最终的 patch 发送回主线程。

之后,在同事的推荐和自己的寻找下,找到两个项目:

前一个项目比较老了,感觉正好符合我的想法。后一个项目受最近 server components 的启发才出来,也是非常有意思。

在深入想想。既然我们可以把计算过程放到 worker 中,也可以放到 wasm 中去。我们可以用 rust 重写 virtual dom 的实现,并像上面 worker 中的处理方式,放到 wasm 中,通过接口传递数据,完成计算后再回调方法,最终实现这个效果。

而以上这套思路,还有点像小程序的思路,但最终还是不大相同。

11:39:02 已有0条回复
192021.4

有些东西坚持很久,东西本身可能无所谓,但坚持这件事很有意义

今天QQ音乐推荐了我的个人播客节目《Robust》。

虽然是由于腾讯内的同事在帮忙推,但是也是一件很开心的事情。做《Robust》是圆自己一个电台梦,可以有一方自己的王国,想说什么就说什么,其他人只能听。但是我是一个很淡然的人,我见到一些朋友做播客喜欢走极端路线,比如一些同性恋节目、离婚、一个事情是不是犯法等等,我觉得都太功利目的了,都想通过内容主题来吸引听众。我做的内容,完完全全不是要吸引听众,就跟我写博客一样,更多是一种表达的方式,把自己的知识或感悟积累成为可以用语言表达的有框架的知识体系。所以,有网友说我一个人讲太无聊了,要是两个人讲就轻松一些。因为我讲的东西偏技术,有的甚至讲技术细节,所以听起来肯定很枯燥,但是并不影响听众打发时间。枯燥是枯燥,但是我还是希望尽可能沉淀东西进去,很久以后回来听,也不会太过时。

我的计划是最少要做100期,我现在做了3年,做了25期,也就是说还要9年才能做满100期,那时我正好40岁,还真是有仪式感的一段岁月。

我写博客也写了马上10年,博客的内容有的时候也是很糙,但是,就像我标题说的,其实,内容本身可能无所谓,因为现在写的东西,过一两年就过时了,甚至是错误的,内容即使在当下很超前很硬,但也有过时的一天。而写博客这件事本身,却伴随了我整整10年,对我来说,是一件了不起的事情。一件事如果能坚持10年,就是了不起,又有谁太在意它的内容本身呢?

21:50:43 已有4条回复
  1. 给你点个赞 (。>∀<。)
    #1030 rxliuli 2021-04-19 23:17 回复
  2. 加油
    #1031 1188 2021-04-20 09:34 回复
  3. 谢谢支持!
    #1032 回复给#1031 否子戈 2021-04-20 10:49 回复
  4. 谢谢哦
    #1033 回复给#1030 否子戈 2021-04-20 10:49 回复