プロジェクトにおける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 に接続するチュートリアル

推薦する

Vueはプルダウンを実装してさらに読み込む

Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにく...

CSS プロパティ display:flow-root 宣言を 1 つの記事でマスターする

zhangxinxu より https://www.zhangxinxu.com/wordpress...

Javascriptのtry catchの2つの機能についてお話しましょう

プログラムは上から下へ順番に実行され、いくつかの制御文によって実行経路を変更することができます。制御...

MySQL データベースのインポートとエクスポートのデータ エラーの解決例の説明

データのエクスポートエラーを報告する 「secure_file_priv」のような変数を表示します。...

Webフロントエンドのパフォーマンス最適化

ウェブフロントエンド最適化のベストプラクティス: コンテンツWebフロントエンド最適化のベストプラク...

Nginx でバージョン番号と Web ページのキャッシュ時間を非表示にする方法

Nginx の最適化 - バージョン番号と Web ページのキャッシュ時間を非表示にするバージョン番...

シングルサインオン制御を実装するためのVueの完全なコード

参考までに、Vue シングル サインオンのデモをご紹介します。詳細を知りたい方のお役に立てれば幸いで...

MySQL の低速クエリの最適化: 理論と実践からの制限の利点

多くの場合、クエリの結果は最大で 1 つのデータ レコードになることが予想されます。この場合、制限 ...

Linux での SSH パスワードフリーログイン設定の詳細な説明

Linux サーバー A と B が 2 台あり、一方のサーバーから SSH 経由でパスワードなしで...

Vueキャッシュ機能の使い方

目次vue2のキャッシュ機能Vue キャッシュ関数の変換最適化要約するvue2のキャッシュ機能vue...

MySQL はどのようにしてデータの整合性を確保するのでしょうか?

オンライン ビジネスにとってデータの一貫性と整合性が重要であることは明らかです。データが失われないよ...

dockerネットワーク双方向接続の詳細な説明

Dockerネットワークを見るdocker ネットワーク ls [root@master ~]# d...

Dockerの基本的なネットワーク構成の詳細な説明

外部アクセスポートをランダムにマップする -P フラグを使用すると、Docker は 49000 か...

Elementはスクリプトを使用して新しいコンポーネントを自動的に構築します

目次背景element-ui の自動構築はどのように機能しますか?メイクファイル新しい.jsファイル...