プロジェクトにおけるVue3のロジック抽出とフィールド表示についての簡単な説明

プロジェクトにおけるVue3のロジック抽出とフィールド表示についての簡単な説明

論理階層化

vue3を使用してプロジェクトを開発する場合、
地域階層化をどのように行うのか? ? ? ?
たとえば、単純な粒子の領域には、[クエリロジック、変更された保存ロジック、新規追加ロジック、削除ロジック]があります。
このページには他の領域がある可能性があります。エリアA、エリアB、エリアC…[ロジックは多数あります]
この時点で、エリアのロジックを分離することができます

異なる地域から事業を分離

エクスポートデフォルト{
  設定 () {
    {queryDo、addDo、delDO、EditDo} を allFun() にします。
    queryDo(); //クエリインターフェースが呼び出されます}
}

// これはページ関数 allFun(){ の領域 A のロジックです
  console.log('私はallFun関数内の直接のステートメントであり、実行されます')
  関数queryDo(){
    console.log('インターフェースをクエリし、バックエンドデータを呼び出しています')
  }
  関数addDo(){
    console.log('私は初心者です')
  }
  関数delDO(){
    console.log('削除しました')
  }
  関数EditDo(){
    console.log('私は編集インターフェースです')
  }
  {queryDo、addDo、delDO、EditDo} を返します
}
</スクリプト>

これを実行する利点

  • allFun 関数を見てみましょう。
  • このエリアの論理をすべて知ることができる
  • CRUD が含まれます。後のメンテナンスに便利

このようなシナリオにどう対処するか

ビジネスロジックを書くときは、
最終的に、領域 A と領域 B の両方で同じインターフェースを呼び出す必要があることがわかりましたが、領域 A では呼び出されるインターフェースがすでに記述されているため、領域 A でインターフェースを直接呼び出す必要があります。

<スクリプト>
エクスポートデフォルト{
  設定 () {
    // ここで使用される構造はエリア A です。let {queryDo,addDo,delDO,EditDo}=aAreaAllFun();

    // エリア B let {querHander}=bAreaAllFun();

    {queryDo、addDo、delDO、EditDo、querHander} を返します
  }
}

// これはAエリアページ上の特定のエリアのロジックです。function aAreaAllFun(){
  関数queryDo(){
    console.log('私はエリアAのクエリインターフェースです')
  }
  関数addDo(){
    console.log('私は初心者です')
  }
  関数delDO(){
    console.log('削除しました')
  }
  関数EditDo(){
    console.log('私は編集インターフェースです')
  }
  {queryDo、addDo、delDO、EditDo} を返します
}

// これはエリアBのビジネスロジックです。関数bAreaAllFun(){
  // エリア A のクエリ インターフェイスを直接呼び出します。aAreaAllFun().queryDo();

  関数querHander(){
    console.log("エリア B のクエリ インターフェイス")
  }
 
  {querHander} を返す
}
</スクリプト>

使用していますが
aAreaAllFun() クエリを実行します。
領域 A のクエリ インターフェイスを直接呼び出すと問題は解決しますが、クエリ インターフェイスが領域 A に含まれるという新しい問題が発生します。
最後のアプローチは、クエリ インターフェイスを分離することです。
これにより、後のメンテナンスも容易になります

最適化

<スクリプト>
エクスポートデフォルト{
  設定 () {
     // これはAエリアページの特定のエリアのロジックです。let {addDo,delDO,EditDo}=aAreaAllFun()
    
    // これは B エリア ページ上の特定のエリアのロジックです。let {querHander}=bAreaAllFun();

    {queryDo、addDo、delDO、EditDo、querHander} を返します
  }
}

// パブリッククエリインターフェース 多くの領域では関数 queryDo(){ が使用される可能性があります
  console.log('私は地域のクエリインターフェースです、引き出されました')
}

// これはAエリアページ上の特定のエリアのロジックです。function aAreaAllFun(){
 
  関数addDo(){
    console.log('私は初心者です')
  }
  関数delDO(){
    console.log('削除しました')
  }
  関数EditDo(){
    console.log('私はエディターインターフェースです')
  }
  {addDo,delDO,EditDo} を返します
}

// これはエリアBのビジネスロジックです。関数bAreaAllFun(){
  // パブリック クエリ インターフェイス queryDo() を直接呼び出します。

  関数querHander(){
    console.log("エリア B のクエリ インターフェイス")
  }
 
  {querHander} を返す
}
</スクリプト>

必ずしもセットアップ関数にreactiveを書く必要はない

多くの友人は、reactive はセットアップ関数内に記述する必要があると考えています。実際はそうではありません。必要な場所に記述できます。たとえば、次の aAreaAllFun 関数内で reactive を使用できます。

<テンプレート>
  <div>
    <h2>名前: {{ areaData.info.name}}</h2>
    <h2>年齢: {{ areaData.info.age}}</h2>
    <h2>性別: {{ areaData.info.sex}}</h2>
  </div>
</テンプレート>
<スクリプト>
'@vue/reactivity' から { reactive } をインポートします。
エクスポートデフォルト{
  設定 () {
 
    {addDo,areaData}=aAreaAllFun() とします。

    {addDo,areaData} を返します
  }
}
// これはAエリアページ上の特定のエリアのロジックです。function aAreaAllFun(){
  areaData = リアクティブ({
    情報:
      名前:「張三」
      年齢:20歳
      性別: '男性'
    }
  })
  関数addDo(){
    console.log('私は初心者です')
  }
  {addDo,areaData} を返します
}
</スクリプト>

ページに値を直接表示する方法

上記の例では、名前、年齢、性別を実装したいので、areaData.info.xxxが必要です。
これは面倒すぎるので最適化する必要がある

<テンプレート>
  <div>
    <h2>名前: {{ name}}</h2>
    <h2>年齢: {{ age}}</h2>
    <h2>性別: {{ sex}}</h2>
  </div>

  <button @click="ChangeCont">値を変更</button>
</テンプレート>
<スクリプト>
'vue' から { reactive,toRefs } をインポートします。
エクスポートデフォルト{
  設定 () {
    {名前、年齢、性別、ChangeCont}=aAreaAllFun() とします。
    {名前、年齢、性別、ChangeCont} を返します
  }
}
// これはAエリアページ上の特定のエリアのロジックです。function aAreaAllFun(){
  areaData = リアクティブ({
    情報:
      名前:「張三」
      年齢:20歳
      性別: '男性'
    }
  })

  関数ChangeCont(){
    // この方法で値を変更すると、ビューは応答しなくなります。[エラー]
    //エリアデータ.info={
    // 名前:'Li Si',
    //年齢:21,
    // 性別:'男性'
    // }

    // ビューを正しく更新するにはこれで OK です [ok]
    エリアデータ情報名='123'
    エリアデータ.info.age=12
    areaData.info.sex='男性'
  }

  // toRefs はレスポンシブ オブジェクトを通常のオブジェクトに変換できます。
  // この共通オブジェクトのすべての値は参照です。
  // ref になるので、値を使用する必要があります。
  {ChangeCont,...toRefs(areaData.info)} を返します。
}
</スクリプト>

プロジェクトにおけるvue3のロジック抽出とフィールド表示に関するこの記事はこれで終わりです。より関連性の高いvue3のロジック抽出とフィールド表示コンテンツについては、123WORDPRESS.COMで過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueはユーザー定義フィールドにデータを表示する方法を実装します

<<:  Mysql 8.0.18 ハッシュ結合テスト (推奨)

>>:  portainer を使用してリモート docker に接続するチュートリアル

推薦する

HTML ボディタグと HTML でよく使われる制御タグの詳細な説明

1. <body> タグ: Web ページの本体をマークするために使用されます。body...

CentOS7.x のアンインストールとインストール MySQL5.7 の操作手順とエンコード形式の変更方法

1. MySQL 5.7 のアンインストール1.1查看yum是否安裝過mysql CD yum li...

GNU Parallelの具体的な使用法

それは何ですか? GNU Parallel は、1 台以上のコンピュータでコンピューティング タスク...

ユーザーがフォームを繰り返し送信するのを防ぐ方法の概要

重複したフォーム送信は、マルチユーザー Web アプリケーションで最も一般的で厄介な問題です。重複送...

Unicode の数学記号の概要

数学、物理学、および一部の科学技術分野で使用される特殊記号は多数あります。Unicode コードには...

IISMonitor を使用して Web ページを監視し、IIS を自動的に再起動します。

目次1. ツールの紹介2. ワークフロー3. 操作インターフェースとパラメータ設定(1)監視と再起動...

MLSQL スタックでストリームのデバッグを簡単にする方法

序文クラスメートが MLSQL Stack のストリーミング サポートを調査しています。そこで、フロ...

メタタグを簡単に説明すると

META タグは、一般的に タグと呼ばれ、HTML Web ページのソース コード内の重要な HTM...

VMware 仮想マシンのインストール win7 オペレーティング システム チュートリアル ダイアグラム

VMwareaのインストールプロセスは説明しませんが、主にwin7イメージをロードする方法を説明しま...

ページ切り替え効果を作成するための純粋な CSS3 のサンプルコード

前に書いたものは複雑すぎるので、シンプルなコアにしましょう <html> <ヘッド...

Dockerイメージをプライベートリポジトリにアップロードする方法の例

イメージは、GitHub と同様に Docker パブリック リポジトリに直接簡単にプッシュできます...

インタビューの質問: ホーリー グレイル レイアウトとダブル ウィング レイアウトの違い

序文今日は、聖杯レイアウトとダブルウィングレイアウト、そしてそれらの違いについてお話しします。この2...

HTML テーブル マークアップ チュートリアル (22): 行の境界線の色属性 BORDERCOLORLIGHT

行内では、明るい境界線の色を個別に定義できます。基本的な構文<TR ボーダーカラーライト=co...

nginxを使用して取得したIPアドレスが127.0.0.1である問題を解決する

IPツールを取得 lombok.extern.slf4j.Slf4j をインポートします。 org....

スタイル属性 (element.style) で定義されたインライン スタイルを削除する方法

Magento を頻繁に変更する場合、element.style に遭遇することがあります。 これは...