目次
2。コンポーネントとストーリーを構成します
3.動的テストのためにARGSとコントロールを使用します
4. MDXを使用して文書化し、設計ガイドラインを追加します
5.デザイントークンとテーマを統合します
6.テストと自動化を追加します
最終的な考え
ホームページ ウェブフロントエンド jsチュートリアル ストーリーブックと反応でデザインシステムを構築します

ストーリーブックと反応でデザインシステムを構築します

Jul 30, 2025 am 05:05 AM
システムを設計します

まず、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。コンポーネントとストーリーを構成します

よく組織されたファイル構造は、保守性の鍵です。グループコンポーネント論理的には、特徴またはタイプ(原子、 atomsorganisms )、またはButtonFormNavigation 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 = {
  ストーリー:[&#39;../src/**/*.stories.@(js|jsx|ts|tsx|mdx)&#39;]、
  // ...
};

これで、デザインシステムはリビングスタイルガイドになります。


5.デザイントークンとテーマを統合します

多くの場合、 styled-componentsemotion 、またはCSS-in-JSを使用して、テーマオブジェクトを介してビジュアルスタイル(色、タイポグラフィ、間隔)を共有します。

例のテーマ:

 // theme.js
constテーマをエクスポート= {{
  色:{
    プライマリ: &#39;#007bff&#39;、
    セカンダリー: &#39;#6c757d&#39;、
  }、
  間隔:(factor)=> `$ {0.5 * factor} rem`、
  タイポグラフィ:{
    見出し:「Bold 1.5Rem System-UI」、
  }、
};

ストーリーをデコレーターで包み、テーマをグローバルに.storybook/preview.jsで適用します:

 「スタイルコンポーネント」から{themeprovider}をインポートします。
&#39;../src/styles/theme&#39;から{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で有効にします:

アドオン:[&#39;@storybook/addon-a11y&#39;];

これで、自動チェックを備えたUIにアクセシビリティタブが表示されます。


最終的な考え

ストーリーブックとReactでデザインシステムを構築するだけでなく、コンポーネントだけでなく、デザインと開発の間に共有言語を作成することです。適切なセットアップで、あなたは取得します:

  • 孤立したコンポーネント開発
  • インタラクティブなドキュメント
  • 視覚テストと一貫性
  • コラボレーションに優しいインターフェイス

小さな(ボタン、入力)を開始し、一貫性を早期に強制し、繰り返し増加させます。時間が経つにつれて、設計システムは製品チームの力程度になります。

基本的に、Reactを使用してUIの品質を気にしている場合、ストーリーブックはオプションではありません。それが不可欠です。

以上がストーリーブックと反応でデザインシステムを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

なぜの下部にタグを配置する必要があるのですか? なぜの下部にタグを配置する必要があるのですか? Jul 02, 2025 am 01:22 AM

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

JSで日付と時間を操作する方法は? JSで日付と時間を操作する方法は? Jul 01, 2025 am 01:27 AM

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

DOMでのイベントの泡立ちとキャプチャとは何ですか? DOMでのイベントの泡立ちとキャプチャとは何ですか? Jul 02, 2025 am 01:19 AM

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

JavaScriptモジュールの決定的なJSラウンドアップ:ESモジュールvs CommonJS JavaScriptモジュールの決定的なJSラウンドアップ:ESモジュールvs CommonJS Jul 02, 2025 am 01:28 AM

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.混合することはできますが、簡単に問題を引き起こす可能性があります。

Garbage CollectionはJavaScriptでどのように機能しますか? Garbage CollectionはJavaScriptでどのように機能しますか? Jul 04, 2025 am 12:42 AM

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

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

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

var vs let vs const:クイックJSラウンドアップ説明 var vs let vs const:クイックJSラウンドアップ説明 Jul 02, 2025 am 01:18 AM

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

なぜDOMの操作が遅く、どのように最適化できるのですか? なぜDOMの操作が遅く、どのように最適化できるのですか? Jul 01, 2025 am 01:28 AM

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

See all articles