【发布时间】:2021-01-16 00:55:14
【问题描述】:
【问题讨论】:
标签: performance svelte svelte-3
【问题讨论】:
标签: performance svelte svelte-3
需要明确的是,当 Rich 说“成本”时,他指的是已编译代码的包大小。在 Web 应用程序的上下文中,这显然是一种成本。为了便于说明,让我们比较一下 svelte 和 react。
React 需要“react”运行时库和“react-dom”渲染器库,也就是 VDOM 运行时,才能正常工作。因此,您需要为这些运行时库的大小支付前期费用。但是对于你添加到应用程序包中的每个组件,包大小方面的“增量成本”只是组件代码的大小,如果你不使用 JSX,几乎就是这样。即使你这样做了,从源代码到编译代码,代码大小的膨胀率也接近 1。
使用 svelte,您不需要 VDOM 运行时。因此,除了小巧的运行时库之外,几乎没有前期成本。但是对于您添加的每个组件,您的源代码.svelte 将被编译器编译(并且不可避免地膨胀)为.js 代码,并且膨胀率远大于 1。因此 Rich 说“一个组件的增量成本”明显更大”。
有人有done the math。根据@halfnelson,我们有这两个等式:
Svelte Bundle Bytes = 0.493 * Source_Size + 2811
React Bundle Bytes = 0.153 * Source_Size + 43503
他的计算是使用压缩代码完成的,因此两个乘数都小于 1。您可以看出,每个 svelte 组件的“增量成本”是反应成本的 3 倍。但是前期的运行时间成本是 react 的 1/15。
【讨论】: