ストーリーブックと反応でデザインシステムを構築します
まず、NPX Storybook Initを使用して、React ProjectにStoryBookをインストールおよび構成し、NPM Run StoryBookを実行してローカル開発サーバーを開始します。 2.関数またはタイプごとにコンポーネントファイル構造を整理し、対応する.stories.jsファイルを作成して、各コンポーネントディレクトリに異なる状態を定義します。 3.ストーリーブックのARGSおよび制御システムを使用して、さまざまなインタラクティブ状態のテストを容易にする動的属性調整を実現します。 4. MDXファイルを使用して、設計仕様、アクセシビリティの指示などを含むリッチなテキストドキュメントを記述し、構成を介したMDXの読み込みをサポートします。 5.テーマを介してデザイントークンを定義し、themeproviderを使用してPreview.jsにグローバルにテーマスタイルを注入します。 6. JESTおよびREACTテストの統合ライブラリは、単位テスト、Chromaticを使用した視覚回帰テストを実行し、 @StoryBook/Addon-A11yを介してアクセシビリティの問題をチェックします。最後に、独立した開発、視覚文書、自動テストをサポートし、設計と開発のコラボレーションを促進するスケーラブルな設計システム。このシステムは、コンポーネントを徐々に繰り返すことにより、チーム間で効率的な再利用を実現でき、UIの一貫性と開発効率を改善するための必要なツールになります。
ストーリーブックとReactを使用して設計システムを構築することは、チームや製品を拡張する一貫した再利用可能なUIコンポーネントを作成するための強力な方法です。 Storybookは、UIコンポーネントの孤立した開発環境を提供し、完全なアプリに依存することなく、それらを単独で構築、テスト、文書化しやすくします。 Reactと組み合わせると、このコンボは最新の設計システムのための頼りになるセットアップになります。

効果的にアプローチする方法は次のとおりです。
1. Reactでストーリーブックを設定します
React Projectにストーリーブックを追加することから始めます。 Create Reactアプリまたは標準のReactセットアップを使用している場合、最も簡単な方法は、自動CLIを使用することです。

NPXストーリーブックInit
このコマンドは、ストーリーブックをインストールし、必要な構成ファイルを追加し、サンプルストーリーを設定します。完了したら、実行してください:
NPMランストーリーブック
これにより、通常はhttp://localhost:6006
でストーリーブック開発サーバーが開始されます。ここでは、コンポーネントをリアルタイムで表示できます。

ヒント: initコマンドは、Viteやnext.jsを含むほとんどのReact設定でうまく機能します。カスタムWebpack構成を使用している場合は、それに応じて
.storybook/main.js
を調整する必要がある場合があります。
2。コンポーネントとストーリーを構成します
よく組織されたファイル構造は、保守性の鍵です。グループコンポーネント論理的には、特徴またはタイプ(原子、 atoms
、 organisms
)、またはButton
、 Form
、 Navigation
molecules
のカテゴリによるグループコンポーネント。
構造の例:
SRC/ ├├)/ │││。8ボタン/ ││├。。 ││├│。。 putton.module.css │├··ックス/入力/ purt.Jsx purtion.stories.js ├├)/スタイル/ │└ク
各.stories.js
ファイルで、異なる状態でコンポーネントをレンダリングする方法を定義します。
// button.stories.js './button'から{button}をインポートします。 デフォルトのエクスポート{ タイトル:「コンポーネント/ボタン」、 コンポーネント:ボタン、 argtypes:{ バリアント:{control: 'select'、options:['primary'、 'secondary']}、 }、 }; constプライマリ= {{{ args:{ ラベル:「私をクリックして」、 バリアント:「プライマリ」、 }、 }; const disabledをエクスポート= { args:{ ラベル:「無効」、 無効:本当、 }、 };
これにより、インタラクティブなコントロール(小道具のドロップダウンなど)が作成され、デザイナーと開発者が視覚的にバリエーションを探索できます。
3.動的テストのためにARGSとコントロールを使用します
StoryBookのARGSシステムを使用すると、その場でコンポーネント入力を変更できます。コントロールと組み合わせることで、ユーザーはUIでプロップを直接調整できます。これは、エッジケースをテストし、柔軟性を紹介するのに大きくなります。
例:
argtypes:{ サイズ:{control: 'radio'、option:['small'、 'medium'、 'large']}、 onclick:{action: 'clicked'}、// logs clicks }
これは、QA、PMS、またはデザイナーがボタンと対話し、クリックまたはサイズ変更時にどのように動作するかを確認できることを意味します。
プロのヒント:
controls: { exclude: ['id', 'className'] }
使用して、コントロールパネルから内部または非視覚小道具を非表示にします。
4. MDXを使用して文書化し、設計ガイドラインを追加します
コードの例を超えてください。 MDX (Markdown JSX)を使用して、デザイントークン、使用ガイドライン、アクセシビリティノート、さらにはFigmaリンクを含むリッチなドキュメントを作成します。
Button.stories.mdx
ファイルを作成します:
'@storybook/blocks'から{meta、story、canvas}をimport; './button.stories.js'からbuttonstoriesとしてインポート *; <Meta Title = "Components /Button" component = {button} /> # ボタン ボタンを使用してアクションをトリガーします。メインアクションにはプライマリボタンを好み、代替案にはセカンダリを使用します。 <canvas> <Story of = {buttonStories.primary} /> </canvas> ##アクセシビリティ 常に記述ラベルを含めます。 「aria-label」で適切にラベル付けされていない限り、アイコンのみのボタンを避けてください。
次に、 .storybook/main.js
を更新して、MDXファイルをロードするようにストーリーブックを構成します。
module.exports = { ストーリー:['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)']、 // ... };
これで、デザインシステムはリビングスタイルガイドになります。
5.デザイントークンとテーマを統合します
多くの場合、 styled-components
、 emotion
、またはCSS-in-JSを使用して、テーマオブジェクトを介してビジュアルスタイル(色、タイポグラフィ、間隔)を共有します。
例のテーマ:
// theme.js constテーマをエクスポート= {{ 色:{ プライマリ: '#007bff'、 セカンダリー: '#6c757d'、 }、 間隔:(factor)=> `$ {0.5 * factor} rem`、 タイポグラフィ:{ 見出し:「Bold 1.5Rem System-UI」、 }、 };
ストーリーをデコレーターで包み、テーマをグローバルに.storybook/preview.js
で適用します:
「スタイルコンポーネント」から{themeprovider}をインポートします。 '../src/styles/theme'から{theme}をインポートします。 constデコレーターをエクスポート= [ (ストーリー)=>( <themeprovider theme = {theme}> <story /> </themeprovider> )、、 ];
これで、すべてのコンポーネントが一貫したスタイリングでレンダリングされます。
6.テストと自動化を追加します
堅牢な設計システムにはテストが必要です。組み合わせる:
- ユニットおよび行動テストのためのJest React Testingライブラリ。
- 視覚回帰テスト用のクロマティック(ストーリーブックアドオン)。
Chromaticのインストール:
npx Chromatic -Project-Token = <YourToken>
CIで実行され、すべてのストーリーを以前のバージョンと比較し、意図しない視覚的な変更をキャッチします。
また、アクセシビリティの問題をキャッチするためにA11yアドオンを追加することも検討してください。
NPMインストール @StoryBook/Addon-A11y
次に、 .storybook/main.js
で有効にします:
アドオン:['@storybook/addon-a11y'];
これで、自動チェックを備えたUIにアクセシビリティタブが表示されます。
最終的な考え
ストーリーブックとReactでデザインシステムを構築するだけでなく、コンポーネントだけでなく、デザインと開発の間に共有言語を作成することです。適切なセットアップで、あなたは取得します:
- 孤立したコンポーネント開発
- インタラクティブなドキュメント
- 視覚テストと一貫性
- コラボレーションに優しいインターフェイス
小さな(ボタン、入力)を開始し、一貫性を早期に強制し、繰り返し増加させます。時間が経つにつれて、設計システムは製品チームの力程度になります。
基本的に、Reactを使用してUIの品質を気にしている場合、ストーリーブックはオプションではありません。それが不可欠です。
以上がストーリーブックと反応でデザインシステムを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック

PLACSTHETTHETTHE BOTTOMOFABLOGPOSTORWEBPAGESERVESPAGESPORCICALPURPOSESESFORSEO、userexperience、andDesign.1.IthelpswithiobyAllowingseNStoAccessKeysword-relevanttagwithtagwithtagwithtagwithemaincontent.2.iTimrovesexperiencebyepingepintepepinedeeping

JavaScriptで日付と時間を処理する場合は、次の点に注意する必要があります。1。日付オブジェクトを作成するには多くの方法があります。 ISO形式の文字列を使用して、互換性を確保することをお勧めします。 2。時間情報を取得および設定して、メソッドを設定でき、月は0から始まることに注意してください。 3.手動でのフォーマット日付には文字列が必要であり、サードパーティライブラリも使用できます。 4.ルクソンなどのタイムゾーンをサポートするライブラリを使用することをお勧めします。これらの重要なポイントを習得すると、一般的な間違いを効果的に回避できます。

イベントキャプチャとバブルは、DOMのイベント伝播の2つの段階です。キャプチャは最上層からターゲット要素までであり、バブルはターゲット要素から上層までです。 1.イベントキャプチャは、AddEventListenerのUseCaptureパラメーターをTrueに設定することにより実装されます。 2。イベントバブルはデフォルトの動作であり、UseCaptureはfalseに設定されているか、省略されます。 3。イベントの伝播を使用して、イベントの伝播を防ぐことができます。 4.イベントバブルは、動的なコンテンツ処理効率を改善するためにイベント委任をサポートします。 5.キャプチャを使用して、ロギングやエラー処理など、事前にイベントを傍受できます。これらの2つのフェーズを理解することは、タイミングとJavaScriptがユーザー操作にどのように反応するかを正確に制御するのに役立ちます。

ESモジュールとCommonJSの主な違いは、ロード方法と使用シナリオです。 1.CommonJSは同期的にロードされ、node.jsサーバー側環境に適しています。 2.ESモジュールは、ブラウザなどのネットワーク環境に適した非同期にロードされています。 3。Syntax、ESモジュールはインポート/エクスポートを使用し、トップレベルのスコープに配置する必要がありますが、CommonJSは実行時に動的に呼ばれるrequire/Module.Exportsを使用します。 4.CommonJSは、Expressなどのnode.jsおよびLibrariesの古いバージョンで広く使用されていますが、ESモジュールは最新のフロントエンドフレームワークとnode.jsv14に適しています。 5.混合することはできますが、簡単に問題を引き起こす可能性があります。

JavaScriptのごみ収集メカニズムは、タグクリアリングアルゴリズムを介してメモリを自動的に管理して、メモリ漏れのリスクを減らします。エンジンはルートオブジェクトからアクティブオブジェクトを横断およびマークし、マークされていないオブジェクトはゴミとして扱われ、クリアされます。たとえば、オブジェクトが参照されなくなった場合(変数をnullに設定するなど)、次のリサイクルでリリースされます。メモリリークの一般的な原因には以下が含まれます。 closurures閉鎖の外部変数への参照。 globalグローバル変数は引き続き大量のデータを保持しています。 V8エンジンは、世代のリサイクル、増分マーキング、並列/同時リサイクルなどの戦略を通じてリサイクル効率を最適化し、メインスレッドのブロック時間を短縮します。開発中、不必要なグローバル参照を避け、パフォーマンスと安定性を改善するためにオブジェクトの関連付けを迅速に装飾する必要があります。

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

var、let、constの違いは、範囲、昇進、繰り返し宣言です。 1.VARは機能範囲であり、変動的なプロモーションを備えており、繰り返しの宣言が可能になります。 2.一時的なデッドゾーンを備えたブロックレベルの範囲であり、繰り返される宣言は許可されていません。 3.Constはブロックレベルの範囲でもあり、すぐに割り当てる必要があり、再割り当てすることはできませんが、参照型の内部値を変更できます。最初にconstを使用し、変数を変更するときにletを使用し、varの使用を避けます。

DOMの動作が遅い主な理由は、再配置と再描画のコストが高く、アクセス効率が低いことです。最適化方法には次のものが含まれます。1。アクセス数を減らし、読み取り値をキャッシュします。 2。バッチ読み取りおよび書き込み操作。 3.マージして変更し、ドキュメントフラグメントまたは非表示要素を使用します。 4.レイアウトジッターを避け、読み書きを中央に処理します。 5.フレームワークまたはrequestAnimationFrame非同期更新を使用します。
