「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > CSS-in-JSと別れる

CSS-in-JSと別れる

2024 年 8 月 15 日に公開
ブラウズ:950

CSS-in-JS

'CSS-in-JS'はstyled-componentsから始まるフローで、StylingをJavascript内部で定義します。

styled-component、Emotion、Mantineなどがあります。

利点

  1. 適用されるスコープが小さい。
    1. css moduleを使用すると、cssもスコープを減らすことができます
  2. コンポーネントと同じ場所で定義されます。 (colocation)
  3. Javascript Variable を使用可能。

欠点

  1. ランタイムオーバーヘッドがある
  2. Css in JS libraryファイルをダウンロードする必要があります。
    1. Emotionは7.9KBです。
    2. Mantineは134KB!

大きな欠点

  1. CSSルールを頻繁に入れると、多くの計算作業が発生します。
    1. Emotion と Css を比較したところ
    2. Css使用時約50パー程度の性能増加があった。
  2. SSRを書くと、さまざまな問題が発生する
    1. Emotionレポが見ると問題が多い。
実際のパフォーマンス比較

プロダクションで実際に使用するコードを使ってCSS-in-JSとTailwindを比較してパフォーマンスを測定してみた。

セットアップ

CSS-in-JSはMantine(Emotionベース)を使用しています。
  • パフォーマンス測定はReact dev toolを使用します。
  • 性能測定対象は30 * 5のTable(コンポーネント名:SheetTable)である。
  • 画面

実験の進行 CSS-in-JS 와 헤어지기

ボタンを押すと上記の画面がレンダリングされます。

React Profilerの録画を押してボタンを押して画面のレンダリングを録画します。
  • SheetTableのレンダリング時間を測定します。
  • 合計5回ずつ実行して平均を求める。
  • CSS-in-JS (Mantine)

Tailwind

CSS-in-JS 와 헤어지기

結果

CSS-in-JS 와 헤어지기

約36人のレンダリング時間が減少しました。

セルコードひとつ変えたのに性能向上が大きかった。 (もちろんセルがほとんど勝つ)

    60Hzモニターで1フレームが16msなのに3frame -> 2frameになったもの
  • 結論

CSS-in-JS 와 헤어지기スタティックに生成されるCSSを使用するのはパフォーマンスの面でかなり良いです。

JS変数を使用する必要がない場合は、Tailwindを書きましょう。

    (追加)SSRを導入するにはCSS-in-JSを捨てるのが楽だ。
  • Ref
  • [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