hox icon indicating copy to clipboard operation
hox copied to clipboard

v1.1.0 引入 react-reconciler 后的体积徒增问题

Open CJY0208 opened this issue 4 years ago • 13 comments

是否是必要的依赖呢?代价似乎太大了

https://bundlephobia.com/[email protected]

image

CJY0208 avatar May 09 '20 04:05 CJY0208

变动由 #19 造成

个人对这个改动的理解为支持非 dom 环境,但此项改动造成了体积徒增(3.8kb -> 76.3kb)

是否可调整为自动识别运行时环境,有条件地选择使用 react-dom 或 react-reconciler

CJY0208 avatar May 09 '20 04:05 CJY0208

那应该是要分成两个 package 了,类似 react-routerreact-router-dom

awmleer avatar May 14 '20 10:05 awmleer

默认的 hox 是采用 custom renderer 方案的,包体积较大,但是兼容性更强;而 hox-dom 则是仅适用于浏览器环境的,体积更小。高端玩家甚至可以自己在 webpack 配置中根据不同环境替换为不同的 package 。 两个 package 的 API 以及行为都完全一致,只是底层实现不同。

这种方案如何?@CJY0208 @brickspert

awmleer avatar May 14 '20 10:05 awmleer

感觉把开始很简单的一个东西,搞复杂了。🐶

brickspert avatar May 14 '20 10:05 brickspert

对用户来说无感知,又能自动识别环境尽可能减少打包大小,这种方案感觉并不存在啊

awmleer avatar May 14 '20 10:05 awmleer

是的…似乎只能构建时判断

CJY0208 avatar May 14 '20 10:05 CJY0208

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

awmleer avatar May 14 '20 10:05 awmleer

或者 hox 主包 render 默认为 react-dom,render 做成可配置的,在文档中做说明,让用户自己替换 render,提供示例

CJY0208 avatar May 14 '20 11:05 CJY0208

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

那岂不是 break change 了。

brickspert avatar May 14 '20 12:05 brickspert

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

那岂不是 break change 了。

是的。。

awmleer avatar May 14 '20 13:05 awmleer

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

这个 +1 票

brickspert avatar May 15 '20 10:05 brickspert

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

+1

conanjunn avatar Oct 29 '20 02:10 conanjunn

这不仅仅是报错的问题。现在是升级过后,卡死了。 function resetCurrentFiber() { { ReactDebugCurrentFrame.getCurrentStack = null; current = null; isRendering = false; } } ReactDebugCurrentFrame 为undefined,然后就是死循环。

maoyanyonghu avatar Dec 10 '20 05:12 maoyanyonghu