”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 与 CSS-in-JS 分手

与 CSS-in-JS 分手

发布于2024-08-15
浏览:833

JS 中的 CSS

'CSS-in-JS' 是一个从样式组件开始并在 Javascript 中定义样式的流程。

样式组件、Emotion、Mantine 等

优点

  1. 适用范围较小。
    1. 如果使用css模块,还可以缩小css的范围
  2. 与组件定义在同一位置。 (并置)
  3. 可以使用Javascript变量。

劣势

  1. 运行时开销
  2. 您必须下载CSS in JS库文件。
    1. 情感为 7.9KB。
    2. Mantine 是 134KB!

巨大的缺点

  1. 频繁插入CSS规则会导致大量的计算工作。
    1. 情感与 CSS 的比较
    2. 使用CSS时,性能提升约50%。
  2. 使用SSR时,会出现各种各样的问题。
    1. 如果您查看 Emotion 存储库,会发现很多问题。
真实世界的性能比较

我们通过使用生产中实际使用的代码比较 CSS-in-JS 和 Tailwind 来测量性能。

设置

    CSS-in-JS 使用 Mantine(基于 Emotion)。
  • 性能测量使用 React 开发工具。
  • 性能测量目标是一个30 * 5的Table(组件名称:SheetTable)。
屏幕

CSS-in-JS 와 헤어지기

实验进展

当您按下
    按钮时,将呈现上面的屏幕
  • 在 React Profiler 中打开录制并按下按钮录制屏幕渲染。
  • 测量SheetTable的渲染时间。
  • 共执行5次,取平均值。
  • CSS-in-JS (Mantine)

CSS-in-JS 와 헤어지기 顺风

CSS-in-JS 와 헤어지기 结果

渲染时间减少约36%。
  • 即使只更改一个单元格代码,性能也能显着提高。 (当然,大部分都是细胞)
  • 在 60Hz 显示器上,1 帧为 16ms,但 3 帧 -> 2 帧

CSS-in-JS 와 헤어지기 结论

使用静态生成的 CSS 在性能方面要好得多。
  • 除非需要使用JS变量,否则使用Tailwind。
  • (补充)引入SSR,方便放弃CSS-in-JS。
  • 参考号
[1] https://dev.to/srmagura/why-were-breaking-up-wiht-css-in-js-4g9b

版本声明 本文转载于:https://dev.to/siisee11/css-in-js-wa-heeojigi-1pbj?1如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3