9

fre RFC:新的编译引擎和ssr

 3 years ago
source link: https://zhuanlan.zhihu.com/p/343106306
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

起因是 `html-webpack-plugin` 的作者给 fre 提的 ssr 的问题

Issues · yisar/fre (github.com)

然后我有一个局部 ssr 的新思路

其实大家都想对 jsx 进行编译,但是因为 jsx 是有 runtime 的,导致 jsx 一直无法编译

但是 react server component 展示了一种非常奇葩的路线,那就是对组件进行阉割,组件做到无状态,无事件,说白了就是无 runtime

然后就可以做编译了……

bEbIzyq.jpg!mobile

和 react server component 不一样的是,fre 的目的是寻找一种近似于字节码的中间码,实际上,server component 目前是用于客户端渲染的,也就是给 suspense 用的

但是我却看到了 ssr 的一种思路

众所周知,传统 ssr 性能差是因为它需要遍历 vdom,进而生成 html 字符串,vdom 的遍历如果发生在 server 这种资源不那么开放的端,就会性能很差

其实在语言设计领域大家都倾向于使用字节码去优化这种树的遍历的性能

同样,在 fre 中理论上也是可以的

实施

唔怎么解释呢?其实大家也看到了,大家都企图通过编译手段来提升一定的性能,比如 vue3 的 block tree,比如 angular ivy 等等

我打算在 fre 中引入一个新的编译引擎,用来支持 server component 和 ssr

因为 fre 不打算成为 framework,所以这个新的引擎我将会重新取名,然后重新建立仓库并外置,这算是 fre 脱离 react 进行的第一个大胆的创新

之前的核心调度和算法的超越称不上是创新,只能是把分内的事情做的更好而已

具体的代码我还需要一段时间的研究

yisar/fre: Tiny Concurrent UI library with Fiber. (github.com)

最后放一下 fre 的 github 地址,最近收到很多歪果仁的好评,还是很惊喜的

说实话我觉得我的代码水平其实很一般,但是我看得多,思考的多

通常我希望遇到更多这样的小伙伴,而不是上来就说一句

你这个对业务有什么价值


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK