国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
Tailwind CSS
ポジティブな側(cè)面
全體的な感想
サーバーサイド レンダリング (SSR)
JS 內(nèi)の CSS (感情)
主要な課題
回顧
長(zhǎng)期的な考慮事項(xiàng)
CSS 変數(shù)とテーマ
ポストプロセッサーと構(gòu)成
ライトニング CSS
概要
ホームページ ウェブフロントエンド jsチュートリアル CSS-in-JSおよびユーティリティファーストCSS(Tailwind)に関する考え

CSS-in-JSおよびユーティリティファーストCSS(Tailwind)に関する考え

Jan 26, 2025 am 08:33 AM

Thoughts on CSS-in-JS and Utility-First CSS (Tailwind)

仕事での最近の UI 開発タスクは、CSS-in-JS とユーティリティファースト CSS (Tailwind) を再検討する貴重な機(jī)會(huì)となりました。 私の日常の役割には UI 作業(yè)が含まれることはほとんどないので、これは、少し錆びついたとしても、新鮮な経験でした。 ここでの私の目的は、開発ワークフローとツールに焦點(diǎn)を當(dāng)てて、両方のアプローチを公平に比較??することです。

Tailwind CSS

私たちのチームが Tailwind を選択したのは、効率性への欲求に駆られて、いくぶん自発的なものでした。 親しみやすさには個(gè)人差があり、懐疑的な見方もありましたが、時(shí)間の節(jié)約は説得力のある要素でした。

ポジティブな側(cè)面

統(tǒng)合、カスタム変數(shù)の作成、テーマの開発は非常に簡(jiǎn)単でした。 新しいテーマの拡張または構(gòu)築は直感的に実行できることが判明しました:

<code>@import "tailwindcss";
@theme {  
  --font-script: Comic-sans; // theme extension
  --color-*: initial;  // default overrides
  --color-white: #fff;
  ...
}</code>

基本スタイルを含めることで、デフォルトのマージンやパディングの削除などの単純なものであっても、時(shí)間を大幅に節(jié)約できました。 これにより、ワークフローが大幅に合理化されました。

Tailwind は直感的なエクスペリエンスを目指しており、それはほぼ達(dá)成されています。 ただし、いくつかの側(cè)面は直感的ではないと感じます。クラスの命名規(guī)則は一般に明確ですが (例: パディングの場(chǎng)合は p、マージンボトムの場(chǎng)合は mb)、場(chǎng)合によっては不一致が発生します (例: rounded の場(chǎng)合は border-radius)。 これはカスタム テーマ定義で軽減できます:

<code>@theme { 
  --border-radius: var(--rounded);
  --border-radius-none: var(--rounded-none);
  --border-radius-full: var(--rounded-full);
  // ...etc.
  --rounded*: initial;
}</code>

全體的な感想

可読性と保守性は予想よりも問題がありませんでした。 構(gòu)文には調(diào)整期間が必要で、VS Code の IntelliSense は時(shí)折遅延しましたが、小さな要素に複數(shù)のクラスが適用されている場(chǎng)合でも、コードは管理しやすく、ナビゲートしやすいままでした。

重要な注意事項(xiàng): @apply に過度に依存しないでください。 これにより、「CSS の追い風(fēng)」という望ましくない結(jié)果が生じる可能性があります。

サーバーサイド レンダリング (SSR)

重要なのは、Tailwind ではテスト中に SSR の問題が発生しませんでした。 シームレスな統(tǒng)合は大きな利點(diǎn)でした。

JS 內(nèi)の CSS (感情)

2024 年から 2025 年にかけて、CSS-in-JS ソリューションの人気は低下します。これは主に React などのフレームワークでのサーバー コンポーネントの臺(tái)頭が原因です。

參照: http://m.miracleart.cn/link/9cb4d40fce0492278209290ee3e4ae31

主要な課題

大きな問題は、React の Context API への依存に起因しています。 React アプリケーションでサーバー コンポーネントとクライアント コンポーネントを混在させると、データ損失が発生し、再レンダリング時(shí)に正しいスタイルが更新されなくなる可能性があります。 この制限は、多くの CSS-in-JS ライブラリに固有のものです。

互換性のある代替手段は存在しますが、根本的な問題は依然として殘っています。 Joshua Comeau のブログは、この問題に関する優(yōu)れたコンテキストを提供します。

回顧

今にして思えば、CSS-in-JS への移行は當(dāng)初予想していたほど有益ではないと感じました。 含まれた開発エクスペリエンス (すべてが 1 つのファイル內(nèi)にある) は最初は魅力的でしたが、時(shí)間が経つにつれて、この利點(diǎn)は重要ではなくなることがわかりました。

長(zhǎng)期的な考慮事項(xiàng)

CSS-in-JS では、入力と設(shè)定のオーバーヘッドが増加しました。 Tailwind と比較すると、効率が低く感じられました。 條件付きプロップの受け渡しはパワーと柔軟性を提供します:

<code>@import "tailwindcss";
@theme {  
  --font-script: Comic-sans; // theme extension
  --color-*: initial;  // default overrides
  --color-white: #fff;
  ...
}</code>

これにより、コードの理解とリファクタリングが複雑になる可能性もあります。 過剰なスタイルの上書きは、デザイン システムの不整合の可能性を示します:

<code>@theme { 
  --border-radius: var(--rounded);
  --border-radius-none: var(--rounded-none);
  --border-radius-full: var(--rounded-full);
  // ...etc.
  --rounded*: initial;
}</code>

新しいプロジェクトの場(chǎng)合は、CSS-in-JS は避けるでしょう。

CSS 変數(shù)とテーマ

CSS 変數(shù)は非常に貴重です。 パレットを一度定義してコンポーネント間で再利用すると、スタイル設(shè)定が簡(jiǎn)素化され、事前定義されたコンポーネント バリアントを使用する場(chǎng)合と同様のエクスペリエンスが提供されます。

<code>const Button = styled.button`
  background: ${props => props.variant === 'primary' ? "#ddd" : "#fff"};
`;

render(
  <div>
    <Button variant="primary">Primary</Button>
  </div>
);</code>

ポストプロセッサーと構(gòu)成

ポストプロセッサ (PostCSS など) は CSS の最適化に不可欠です。 これらは大きな利點(diǎn)をもたらします:

  • cssnano: 未使用のコードを削除します。
  • postcss-nested: Sass と同様のネストされた CSS を有効にします。
  • stylelint: lint 機(jī)能を提供します。
  • autoprefixer: ベンダー プレフィックスを追加します (ただし、現(xiàn)在はそれほど重要ではありません)。
  • postcss-import: @import ステートメントを有効にします。

(完全なリスト: http://m.miracleart.cn/link/2d280461b029134123f1f1a356e176b1)

ポストプロセッサーはオーバーヘッドを追加しながら、開発者のエクスペリエンスと CSS のパフォーマンスを向上させます。 多くの場(chǎng)合、初期投資を上回るメリットが得られます。

ライトニング CSS

Lightning CSS (PostCSS の Rust ベースの代替品) は、より高速なビルド時(shí)間と多くの同じ機(jī)能を提供します。 適切に統(tǒng)合されたソリューションを求める場(chǎng)合は、検討してみる価値があります。

概要

CSS の狀況は急速に進(jìn)化しており、新しいツールやアプローチが常に登場(chǎng)しています。 Tailwind と CSS-in-JS に関する私の経験は有益であり、それらの長(zhǎng)所と短所の両方を浮き彫りにしました。 RSC が將來の CSS ツールに與える影響は大きく、さらなる検討が必要です。

以上がCSS-in-JSおよびユーティリティファーストCSS(Tailwind)に関する考えの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

node.jsでHTTPリクエストを作成する方法は? node.jsでHTTPリクエストを作成する方法は? Jul 13, 2025 am 02:18 AM

node.jsでHTTPリクエストを開始するには、組み込みモジュール、axios、およびnode-fetchを使用する3つの一般的な方法があります。 1.依存関係のない內(nèi)蔵http/httpsモジュールを使用します。これは基本的なシナリオに適していますが、https.get()を使用してデータを取得したり、.write()を介してPOSTリクエストを送信するなど、データステッチとエラーモニタリングの手動(dòng)処理が必要です。 2.Axiosは、約束に基づいたサードパーティライブラリです。簡(jiǎn)潔な構(gòu)文と強(qiáng)力な機(jī)能を備えており、非同期/待ち聲、自動(dòng)JSON変換、インターセプターなどをサポートします。非同期リクエスト操作を簡(jiǎn)素化することをお?jiǎng)幛幛筏蓼埂?3.Node-Fetchは、約束と単純な構(gòu)文に基づいて、ブラウザフェッチに似たスタイルを提供します

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當(dāng)てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 Jul 08, 2025 pm 02:27 PM

こんにちは、JavaScript開発者!今週のJavaScriptニュースへようこそ!今週は、DenoとのOracleの商標(biāo)紛爭(zhēng)、新しいJavaScript Timeオブジェクトがブラウザ、Google Chromeアップデート、およびいくつかの強(qiáng)力な開発ツールによってサポートされています。始めましょう! 「JavaScript」の商標(biāo)を登録しようとするDeno Oracleの試みとのOracleの商標(biāo)紛爭(zhēng)は、論爭(zhēng)を引き起こしました。 Node.jsとDenoの作成者であるRyan Dahlは、商標(biāo)をキャンセルするために請(qǐng)願(yuàn)書を提出しました。

キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? Jul 08, 2025 am 02:43 AM

Cacheapiは、ブラウザからネットワークリクエストをキャッシュするツールです。これは、ウェブサイトのパフォーマンスとオフラインエクスペリエンスを改善するために、サービスワーカーと併用することがよくあります。 1.開発者は、スクリプト、スタイルシート、寫真などのリソースを手動(dòng)で保存できるようにします。 2。要求に応じてキャッシュ応答と一致させることができます。 3.特定のキャッシュの削除またはキャッシュ全體のクリアをサポートします。 4.フェッチイベントを聞いているサービスワーカーを介して、キャッシュの優(yōu)先順位またはネットワークの優(yōu)先戦略を?qū)g裝できます。 5.オフラインサポート、繰り返しのアクセス速度の高速化、主要なリソースのプリロード、バックグラウンドアップデートコンテンツによく使用されます。 6.それを使用する場(chǎng)合、キャッシュバージョンの制御、ストレージ制限、およびHTTPキャッシングメカニズムとの違いに注意する必要があります。

ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ Jul 08, 2025 am 02:40 AM

約束は、JavaScriptで非同期操作を処理するためのコアメカニズムです。チェーンコール、エラー処理、コンビナーの理解は、アプリケーションをマスターするための鍵です。 1.チェーンコールは、.then()を通じて新しい約束を返し、非同期プロセスの連結(jié)を?qū)g現(xiàn)します。それぞれ.then()は以前の結(jié)果を受け取り、値または約束を返すことができます。 2。エラー処理は、.catch()を使用して例外をキャッチしてサイレント障害を回避し、キャッチのデフォルト値を返すためにプロセスを継続する必要があります。 3。promise.all()などの組み合わせ(すべての成功後にのみ成功しました)、promise.race()(最初の完了が返されます)、promise.allsettled()(すべての完了を待っています)

JavaScriptでのデータ操作のためのArray.Prototypeメソッドを活用します JavaScriptでのデータ操作のためのArray.Prototypeメソッドを活用します Jul 06, 2025 am 02:36 AM

.map()、.filter()、.reduce()などのJavaScriptアレイ內(nèi)蔵メソッドは、データ処理を簡(jiǎn)素化できます。 1).map()は、要素を1つに変換して新しい配列を生成するために使用されます。 2).filter()は、條件ごとに要素をフィルタリングするために使用されます。 3).reduce()は、データを単一の値として集約するために使用されます。使用すると誤用を避ける必要があり、その結(jié)果、副作用やパフォーマンスの問題が発生します。

JSラウンドアップ:JavaScriptイベントループに深く潛り込む JSラウンドアップ:JavaScriptイベントループに深く潛り込む Jul 08, 2025 am 02:24 AM

JavaScriptのイベントループは、コールスタック、WebAPIS、およびタスクキューを調(diào)整することにより、非同期操作を管理します。 1.コールスタックは同期コードを?qū)g行し、非同期タスクに遭遇すると、処理のためにWebAPIに引き渡されます。 2。WebAPIがバックグラウンドでタスクを完了した後、コールバックを?qū)潖辘工毳濠`(マクロタスクまたはマイクロタスク)に入れます。 3.イベントループは、コールスタックが空であるかどうかをチェックします??栅螆?chǎng)合、コールバックはキューから取り出され、実行のためにコールスタックに押し込まれます。 4.マイクロタスク(Promise.thenなど)は、マクロタスク(SettimeOutなど)より優(yōu)先されます。 5.イベントループを理解するには、メインスレッドのブロックを避け、コード実行順序を最適化するのに役立ちます。

JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 Jul 08, 2025 am 02:36 AM

イベントの泡は、ターゲット要素から祖先ノードに外側(cè)に伝播し、イベントキャプチャは外側(cè)の層からターゲット要素に內(nèi)側(cè)に伝播します。 1。イベントバブル:子要素をクリックした後、イベントは親要素のリスナーを上向きにトリガーします。たとえば、ボタンをクリックした後、最初に保育を出してから、親クリックしました。 2。イベントキャプチャ:3番目のパラメーターをtrueに設(shè)定して、リスナーが[親子要素のキャプチャリスナー]をクリックする前に[親要素のキャプチャリスナーをトリガーするなど、キャプチャステージで実行されるようにします。 3.実用的な用途には、子どもの要素イベントの統(tǒng)一された管理、傍受前処理、パフォーマンスの最適化が含まれます。 4. DOMイベントストリームは、キャプチャ、ターゲット、バブルの3つの段階に分割され、デフォルトのリスナーはバブルステージで実行されます。

See all articles