目次
ドメイン駆動型デザインのプライマー
DDDサイトの整理
ドメインを整理することから始めます
各ドメインのコンポーネントとコンテナを定義します
必要に応じてヘルパーを追加します
プレゼンターと一緒にテンプレートをクリーンアップします
ロジックをユーティリティに押し出します
アプリを整理するための間違った方法はありません!
ホームページ ウェブフロントエンド CSSチュートリアル Reactを使用したドメイン駆動型のデザイン

Reactを使用したドメイン駆動型のデザイン

Apr 13, 2025 am 11:22 AM

Reactを使用したドメイン駆動型のデザイン

Reactの世界でフロントエンドアプリケーションを整理する方法に関するガイダンスはほとんどありません。 (「正しいと感じる」までファイルを移動するだけです笑)。真実は、私たちがより良くできるということです。サイトをアーキテクチャ化するために使用することを検討できるパターンを1つ見てみましょう。

最初は、コードを /コンポーネントと /コンテナフォルダー間で分割する場合があります。これは小さなサイトで機能しますが、より大きなサイトにスケーリングするときに、より堅牢なものを探していることがわかります。幸いなことに、システム設計に関する数十年にわたる研究により、スケーラブルなアーキテクチャを作成するために探索する豊富なパターンが得られました。

それらの1つはドメイン駆動型のデザインであり、ここ数年で人気を取り戻しました。 React-Landで使用する方法を探りましょう。

ドメイン駆動型デザインのプライマー

ドメイン駆動型設計(DDD)は、基礎となるデータモデルをドメインロジックに関連付けることにより、ソフトウェアアプリケーションの複雑さを管理する慣行です。それは口いっぱいですので、さらに分解しましょう。

ドメインはオントロジーであり、物事が世界でどのようにグループ化されるかを意味します。たとえば、 Joistという言葉には、建物構造のドメインに非常に具体的な接続があります。マイクのような別の言葉は、聖書の名前の領域(マイケルの略)や、NATOの音声アルファベットに関連する政治の領域など、複数のドメインに属することができます。

デザインがドメイン駆動型である場合、複雑さを管理するためにコンテキスト(ゲームなどのコンテキストグループ化など)にドメインのモデル(ポーカーのドメインのトランプ)を配置することを意味します。

DDDサイトの整理

ドメイン駆動型の設計は、成長サイトの複雑さをより多くのモデルを追加するため、特に特別に処理するためのものです。 1つのモデルを備えたサイトにとっては意味がありませ約4つのモデルに到達したら、モデルを複数のコンテキストにバインドすることを検討し始めるのに良い時期です。これは難しいルールではないので、複数のコンテキストに侵入する必要があるとは感じないでください。ただし、4つのモデルを超えると、これらのコンテキストグループが浮上し始めます。

ドメインを整理することから始めます

Twitterをサンプルサイトとして使用して整理しましょう。 Twitter内のドメインを分離する1つの方法は、ツイートを強化するブログプラットフォームと、マイクロブログが広がり、繁栄することを可能にする相互作用要素にモデルを分割することです。

これは、Twitterで懸念を分離する唯一の方法ですか?間違いなくそうではありません! DDDの重要な側面の1つは、ドメインを作成する正しい方法がないことです。アプリケーションの境界のあるコンテキストを分割する方法はたくさんあるので、選択したアーキテクチャにあまり集中しないでください。代わりに、これをスプリングボードとして使用して、DDDをフロントエンドコードの組織に適用する方法を理解します。

とはいえ、私たちのコードは、このように見えるように構造化されます(Create-React-Appのようなものから始めると仮定します):

 Twitter/
├├。css
├├。Js
├) app.test.js
├├)/ブログ/
└└)/相互作用/
ログイン後にコピー

各ドメインのコンポーネントとコンテナを定義します

基本的なフォルダー構造がセットアップされたので、実際のコンポーネントを追加する時が来ました!上記のドメインUML図を見ると、特定のページにデータを取得するコンテナと、それらのページを構成するテンプレートを整理するコンポーネントから始めると便利です。アプリで拡張すると、次の構造が整っています(添付のtest.jsファイルを簡単にするために省略します):

 Twitter/
├├。css
├├。Js
├) app.test.js
├├)/ブログ/
homepage.js
││。。
│├。。
│├│。-TweetList.js
│├│。。TweetListitem.js
│││。-userpage.js
│└│。-usercard.js
└└)/相互作用/
    pollowbutton.js
    ├·ックス。Button.jsのように
    └)sharebutton.js
ログイン後にコピー

ルートレベルのHTMLタグに対するReactを初期化するために、アプリファイルを保持しています。ドメインを配置すると、コンテナ(ホームページやユーザーページなど)とコンポーネント(TweetCardやTweetListitemなど)の構築を開始します。または、ドメイン内のモデルをさらにセグメント化して、次のようにすることもできます。

 Twitter/
└└)/ブログ/
    ├├)-ユーザー/
    homepage.js
    │├│。-usercard.js
    │││。-userpage.js
    └└)/ツイート/
        weetcard.js
        ├··ックスtweetdialog.js
        ├)tweetlist.js
        └└。。TweetListitem.js
ログイン後にコピー

しかし、アプリケーションのサイズを考えると、この段階では必要ありません。

必要に応じてヘルパーを追加します

アプリケーションを構築するにつれて、UIは複雑さが増加し続けます。これに対処するために、懸念を分離し、コンポーネントテンプレートからロジックを引き出すための2つの方法があります。プレゼンターユーティリティです。プレゼンターは、すべての視覚的なプレゼンテーションロジックをテンプレートから押し出して、ビューレイヤーを可能な限りクリーンでシンプルに保ちます。ユーティリティは、テンプレートに特に関連していないフロントエンドの他のすべてのロジックの共有機能を収集します。これらをもう少し詳しく調べましょう。

プレゼンターと一緒にテンプレートをクリーンアップします

Twitterプロフィールを考えてください。私のアカウントでここでどのような要素を見ていますか?

ユーザーに直接関連する情報があります:名前、ハンドル、説明、場所、ウェブサイト、誕生日、開始日。他のモデル間には関連性のカウントもあります。他の何人のユーザーが私をフォローしていますか?他に何人のユーザーをフォローしていますか?私のツイート、返信、メディアのアップロード、私が気に入ったコンテンツなど、ページにさえキャプチャされていない追加のロジックがあります。このすべてのプレゼンテーションロジックを適切にキャプチャするために、ファイルツリー内に追加ファイルを追加して、JSXコンポーネントからプレゼンターパターンを分離できます。

 Twitter/
└└)/ブログ/
    ├├)-ユーザー/
    │├│。-usercard.js
    │├クアード。presenter.js
ログイン後にコピー

ロジックをユーティリティに押し出します

特定のプレゼンテーションロジックは非常に基本的であるため、レンダリング内で使用されているかどうかに関係なく、アプリケーション全体で役立ちます。通貨のフォーマット、検証、およびタイムスタンプのフォーマットはすべて、アプリケーション全体で孤立したユーティリティ機能から利益を得ることができるユースケースです。それらはどこに住んでいますか?ドメインに及ぶため、ユーティリティは独自のフォルダーになります。

 Twitter/
    ├├。css
    ├├。Js
    ├) app.test.js
    ├├)/ブログ/
    homepage.js
    ││。。
    │├。。
    │├│。-TweetList.js
    │├│。。TweetListitem.js
    │├│。-usercard.js
    │││。-usercard.presenterjs
    │││。-userpage.js
    ├├)/相互作用/
    pollowbutton.js
    │├│。-button.js
    │└│。-sharebutton.js
    p
         ├├。Currency.js
         ├··ックスtime.js
         └└)
ログイン後にコピー

アプリを整理するための間違った方法はありません!

最終的に、選択はあなたのものです。これは、アプリケーションを手配できる無数の方法のほんの一例です。ドメイン駆動型の設計は、ビジネスロジックを意味のある方法で分離し、開発者間のドメインの専門知識に明確な区別を作成し、コードを簡単に整理してスケーリングするためのルールを提供するため、貴重なツールです。

ただし、Reactアプリケーションファイル構造の従来のカオスの代替品を探している場合は、ドメイン駆動型のデザインを見てください。それはただのことかもしれません。

最後に、この種のコンテンツが好きで、フロントエンド、ユーザーインターフェイスの開発、UXの設計と研究(業界での経験によって編成)について詳しく知りたい場合は、チェックアウトしたい無料のニュースレターを実行します。

以上がReactを使用したドメイン駆動型のデザインの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

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)

粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード 粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード Apr 03, 2025 am 10:30 AM

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

Googleフォント変数フォント Googleフォント変数フォント Apr 09, 2025 am 10:42 AM

Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません

HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法 HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法 Apr 11, 2025 am 11:29 AM

プロジェクトにカウントダウンタイマーが必要だったことはありますか?そのようなことのために、プラグインに手を伸ばすのは自然なことかもしれませんが、実際にはもっとたくさんあります

HTMLデータ属性ガイド HTMLデータ属性ガイド Apr 11, 2025 am 11:50 AM

HTML、CSS、およびJavaScriptのデータ属性について知りたいと思っていたことはすべて。

フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? Apr 05, 2025 pm 05:51 PM

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...

CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? Apr 05, 2025 pm 11:24 PM

要素の数が固定されていない場合、CSSを介して指定されたクラス名の最初の子要素を選択する方法。 HTML構造を処理するとき、あなたはしばしば異なる要素に遭遇します...

SASSをより速くするための概念の証明 SASSをより速くするための概念の証明 Apr 16, 2025 am 10:38 AM

新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

See all articles