亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
ミックスインの簡単な説明
ミックスインは「有害」と見なされます
紛爭の命名
暗黙の依存関係
Mixinから移動します
構(gòu)成APIクラッシュコース
コード抽出
コードの再利用
紛爭の命名...解決されました!
暗黙の依存関係...解決済み!
要約します
ホームページ ウェブフロントエンド CSSチュートリアル Vue構(gòu)成APIがVueミックスインをどのように置き換えるか

Vue構(gòu)成APIがVueミックスインをどのように置き換えるか

Apr 07, 2025 am 10:50 AM

Vue構(gòu)成APIがVueミックスインをどのように置き換えるか

Vueコンポーネント間でコードを共有しますか? Vue 2に精通している場合は、 Mixinを使用してこれを達成した可能性があります。しかし、新しい構(gòu)成API (現(xiàn)在はVUE 2のプラグインとして利用可能であり、VUE 3の今後の機能です)は、より良いソリューションを提供します。

この記事では、Mixinの欠點を調(diào)査し、構(gòu)成APIがこれらの欠點を克服し、VUEアプリケーションをよりスケーラブルにする方法を理解します。

ミックスインの簡単な説明

次のセクションでカバーするものにとって重要であるため、Mixinモードをすばやく確認しましょう。

通常、VUEコンポーネントは、データ、メソッド、計算プロパティなど、実裝する必要がある機能を表すさまざまなプロパティを持つJavaScriptオブジェクトによって定義されます。

 // mycomponent.js
デフォルトのエクスポート{
  データ:()=>({
    mydataproperty:null
  })、
  方法:{
    mymethod(){...}
  }
  // ...
}

コンポーネント間で同じプロパティを共有したい場合は、共通のプロパティを別のモジュールに抽出できます。

 // mymixin.js
デフォルトのエクスポート{
  データ:()=>({
    myshareddataproperty:null
  })、
  方法:{
    mysharedmethod(){...}
  }
}

これで、このミックスインをMixin構(gòu)成プロパティに割り當てることで使用する任意のコンポーネントに追加できます。実行時に、Vueはコンポーネントの特性を任意のミックスインと統(tǒng)合します。

 //消費component.js
"./mymixin.js"からmymixinをインポートします。

デフォルトのエクスポート{
  ミックスイン:[mymixin]、
  データ:()=>({
    mylocaldataproperty:null
  })、
  方法:{
    mylocalmethod(){...}
  }
}

この特定の例では、ランタイムで使用されるコンポーネント定義は次のとおりです。

デフォルトのエクスポート{
  データ:()=>({
    myshareddataproperty:null、
    mylocaldataproperty:null
  })、
  方法:{
    mysharedmethod(){...}、
    mylocalmethod(){...}
  }
}

ミックスインは「有害」と見なされます

早くも2016年半ばに、ダン?アブラモフは「ミキシンは有害と考えられている」と書いた。そこでは、反応成分にミキシンを使用して論理を再利用することが反パターンであると考えており、それらを避けることを提唱した。

殘念ながら、彼がReact Mixinについて言及した欠點もVueにも當てはまります。構(gòu)成APIがこれらの欠點をどのように克服するかを理解する前に、これらの欠點を見てみましょう。

紛爭の命名

Mixin Modeが実行時に2つのオブジェクトをどのようにマージするかを確認します。彼らがすべて同じ名前でプロパティを共有するとどうなりますか?

 const mixin = {
  データ:()=>({
    myProp:null
  })
}

デフォルトのエクスポート{
  ミックスイン:[ミックスイン]、
  データ:()=>({
    //同じ名前!
    myProp:null
  })
}

これは、合併戦略が登場する場所です。これは、コンポーネントに同じ名前の複數(shù)のオプションが含まれている場合に何が起こるかを決定するための一連のルールです。

VUEコンポーネントのデフォルト(ただし構(gòu)成可能な)マージポリシーは、ローカルオプションがミックスインオプションをオーバーライドすることを規(guī)定しています。しかし、例外があります。たとえば、同じタイプの複數(shù)のライフサイクルフックがある場合、これらのフックはフックアレイに追加され、すべてのフックが順次呼ばれます。

実際のエラーが発生しなくても、複數(shù)のコンポーネントとミキシン間の名前のプロパティを扱う場合、コードを作成するのがますます困難になる可能性があります。これは、NPMパッケージとしてのサードパーティのミックスインと、競合を引き起こす可能性のある名前のプロパティが特に困難です。

暗黙の依存関係

Mixinとそれを使用するコンポーネントの間には階層的な関係はありません。これは、コンポーネントがミックスインで定義されたデータプロパティを使用できることを意味します(例:mysharedDataproperty)が、ミックスインはコンポーネントで定義されたデータプロパティ(mylocaldatapropertyなど)を想定して使用することもできます。これは、Mixinを使用して入力検証を共有する場合に一般的です。 Mixinは、コンポーネントが獨自の検証メソッドで使用する入力値を持つことを期待する場合があります。

しかし、これは問題を引き起こす可能性があります。後でコンポーネントをリファクタリングし、混合物が必要とする変數(shù)の名前を変更するとどうなりますか?コンポーネントからの問題に気付くことはありません。コード検査官もそれを見つけません。実行時にのみエラーが表示されます。

多くのミックスインを含むコンポーネントを想像してください。ローカルのデータプロパティをリファクタリングできますか、それともミックスを壊しますか?どのミックスがありますか?すべてのミキシンを手動で検索して知る必要があります。

Mixinから移動します

Danの記事は、高度なコンポーネント、ユーティリティ方法、その他のコンポーネントの組み合わせパターンなど、Mixinの代替品を提供します。

Vueは多くの方法で反応することに似ていますが、彼が提案する代替パターンはVueにうまく変換されません。したがって、この投稿は2016年半ばに書かれましたが、Vue開発者はそれ以來、Mixinの問題に耐えてきました。

今まで。 Mixinの欠點は、組成APIの背後にある主な動機付け要因の1つです。ミックスインの問題をどのように克服するかを理解する前に、それがどのように機能するかを簡単に見てみましょう。

構(gòu)成APIクラッシュコース

構(gòu)成APIの重要なアイデアは、コンポーネント(狀態(tài)、メソッド、計算プロパティなど)の関數(shù)をオブジェクトプロパティとして定義する代わりに、新しいセットアップ関數(shù)から返されるJavaScript変數(shù)として定義されることです。

以下は、「カウンター」関數(shù)を定義する構(gòu)成APIを使用して定義されたVUE 2コンポーネントの典型的な例です。

 //counter.vue
デフォルトのエクスポート{
  データ:()=>({
    カウント:0
  })、
  方法:{
    increment(){
      this.count;
    }
  }、
  計算:{
    double(){
      this.count * 2を返します。
    }
  }
}

構(gòu)成APIを使用して定義されたまったく同じコンポーネントを以下に示します。

 // counter.vue
「Vue」から{ref、calculated}をインポートします。

デフォルトのエクスポート{
  設定() {
    const count = ref(0);
    const double = computed(()=> count.value * 2)
    function increment(){
      count.value;
    }
    戻る {
      カウント、
      ダブル、
      インクリメント
    }
  }
}

まず、REF関數(shù)をインポートしたことに気付きます。これにより、データ変數(shù)とほぼ同じ関數(shù)を持つレスポンシブ変數(shù)を定義できます。コンピューター機能にも同じことが言えます。

増分方式は応答性がないため、通常のJavaScript関數(shù)として宣言できます。カウントレスポンシブ変數(shù)の値を変更するには、サブプロパティ値を変更する必要があることに注意してください。これは、refで作成された応答性変數(shù)が、渡されたときに応答性を維持するためにオブジェクトである必要があるためです。

refの仕組みを詳細に理解するために、Vue Composition APIドキュメントを參照することをお勧めします。

これらの関數(shù)を定義した後、セットアップ関數(shù)からそれらを返します。上記の2つのコンポーネントの関數(shù)に違いはありません。私たちがしたのは、代替APIを使用することだけでした。

ヒント:構(gòu)成APIはVUE 3のコア機能になりますが、VUE 2のNPM Plugin @vue/Composition-APIを使用することもできます。

コード抽出

構(gòu)成APIの最初の明らかな利點は、ロジックの抽出の容易さです。

構(gòu)成APIを使用して、上記のコンポーネントをリファクタリングして、定義する機能がJavaScriptモジュールUSECounterにあるようにしましょう。 (関數(shù)の説明として「使用」を使用するプレフィックスは、構(gòu)成APIの命名規(guī)則です。)

 // usecounter.js
「Vue」から{ref、calculated}をインポートします。

デフォルトfunction()をエクスポートする{
  const count = ref(0);
  const double = computed(()=> count.value * 2)
  function increment(){
    count.value;
  }
  戻る {
    カウント、
    ダブル、
    インクリメント
  }
}

コードの再利用

この関數(shù)をコンポーネントで使用するには、モジュールをコンポーネントファイルにインポートして呼び出すだけです(インポートは関數(shù)であることに注意してください)。これにより、定義する変數(shù)が返され、セットアップ関數(shù)から返すことができます。

 // mycomponent.js
"./usecounter.js"からUsecounterをインポートします。

デフォルトのエクスポート{
  設定() {
    const {count、double、increment} = usecounter();
    戻る {
      カウント、
      ダブル、
      インクリメント
    }
  }
}

最初は、これは少し長くて意味のないように見えますが、このパターンが以前に見た混合問題をどのように克服しているかを見てみましょう。

紛爭の命名...解決されました!

以前に、Mixinが使用コンポーネントの名前と同じ名前のプロパティを使用したり、使用コンポーネントで使用されている他のミックスのプロパティとは隠されたりすることができることがわかりました。

この問題は、構(gòu)成関數(shù)から返された狀態(tài)または方法を明示的に名前にする必要があるため、構(gòu)成APIには存在しません。

デフォルトのエクスポート{
  設定 () {
    const {somevar1、somemethod1} = usecompfunction1();
    const {somevar2、somemethod2} = usecompfunction2();
    戻る {
      Somevar1、
      somemethod1、
      Somevar2、
      somemethod2
    }
  }
}

命名競合は、他のJavaScript変數(shù)と同じ方法で解決されます。

暗黙の依存関係...解決済み!

また、Mixinがコンポーネントで定義されたデータプロパティを使用できることも見てきました。これにより、コードを脆弱で理解しにくくします。

併用関數(shù)は、コンポーネントで定義されたローカル変數(shù)を呼び出すこともできます。ただし、違いは、この変數(shù)を複合関數(shù)に明示的に渡す必要があることです。

 "./USECOMPFUNCTION"からUseCompFunctionをインポートします。

デフォルトのエクスポート{
  設定 () {
    //コンビネーション関數(shù)に使用する必要があるローカル値const mylocalval = ref(0);

    //パラメーターconst {...} = usecompfunction(mylocalval)として明示的に渡す必要があります。
  }
}

要約します

混合モードは、表面上で非常に安全に見えます。ただし、コードの脆弱性と関數(shù)を理解する能力を覆い隠す方法が増加するため、オブジェクトをマージしてコードを共有することはアンチパターンになります。

Composition APIの最も賢いことは、VUEがネイティブJavaScriptに組み込まれたセキュリティ対策に依存して、変數(shù)を関數(shù)やモジュールシステムに渡すなどのコードを共有できることです。

これは、構(gòu)成APIがあらゆる點でVueの古典的なAPIよりも優(yōu)れていることを意味しますか?いいえ。ほとんどの場合、古典的なAPIに固執(zhí)することができます。ただし、コードを再利用する予定がある場合、構(gòu)成APIは間違いなくより良い選択です。

以上がVue構(gòu)成APIがVueミックスインをどのように置き換えるかの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、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 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ロードスピナーとアニメーションを作成するためのCSSチュートリアル ロードスピナーとアニメーションを作成するためのCSSチュートリアル Jul 07, 2025 am 12:07 AM

CSSロード回転子を作成するには3つの方法があります。1。境界の基本回転子を使用して、HTMLとCSSを介してシンプルなアニメーションを?qū)g現(xiàn)します。 2。複數(shù)のポイントのカスタム回転子を使用して、異なる遅延時間を経てジャンプ効果を?qū)g現(xiàn)します。 3.ボタンに回転子を追加し、JavaScriptを介してクラスを切り替えて、読み込みステータスを表示します。各アプローチは、ユーザーエクスペリエンスを向上させるために、色、サイズ、アクセシビリティ、パフォーマンスの最適化などのデザインの詳細の重要性を強調(diào)しています。

CSSブラウザの互換性の問題とプレフィックスに対処します CSSブラウザの互換性の問題とプレフィックスに対処します Jul 07, 2025 am 01:44 AM

CSSブラウザの互換性とプレフィックスの問題に対処するには、ブラウザサポートの違いを理解し、ベンダーのプレフィックスを合理的に使用する必要があります。 1. FlexBoxやグリッドのサポート、位置:粘著性の無効、アニメーションのパフォーマンスなどの一般的な問題を理解することは異なります。 2. CANIUSE確認機能サポートステータスを確認します。 3. -webkit-、-moz-、-ms-、-o-およびその他のメーカーのプレフィックスを正しく使用します。 4.自動的にプレフィックスを追加するためにAutoprefixerを使用することをお勧めします。 5. PostCSSをインストールし、ターゲットブラウザを指定するようにBrowserSlistを構(gòu)成します。 6.建設中の互換性を自動的に処理します。 7. Modernizr検出機能は、古いプロジェクトに使用できます。 8.すべてのブラウザの一貫性を追求する必要はありません、

ディスプレイの違いは何ですか:インライン、ディスプレイ:ブロック、ディスプレイ:インラインブロック? ディスプレイの違いは何ですか:インライン、ディスプレイ:ブロック、ディスプレイ:インラインブロック? Jul 11, 2025 am 03:25 AM

Themaindifferencesbetweendisplay:インライン、ブロック、およびinline-blockinhtml/cssarelayoutbehavior、spaceusage、andstylingcontrol.1.inlineelementsflowwithtext、notstartonnewlines、nagrorewidth/height、height、andonlyhorizo??ntalpadddddddddddddddding

CSSクリップパスでカスタムシェイプを作成します CSSクリップパスでカスタムシェイプを作成します Jul 09, 2025 am 01:29 AM

CSSのクリップパス屬性を作物要素に使用して、寫真やSVGに依存することなく、三角形、円形ノッチ、ポリゴンなどのカスタム形狀になります。その利點には、次のものが含まれます。1。円、楕円、ポリゴンなどのさまざまな基本的な形狀をサポートします。 2。レスポンシブ調(diào)整とモバイル端子に適応可能。 3.アニメーションが簡単で、HoverまたはJavaScriptと組み合わせて動的効果を?qū)g現(xiàn)できます。 4.レイアウトフローには影響せず、ディスプレイエリアのみを収穫します。一般的な使用法は、円形のクリップパス:円(50pxatcenter)および三角クリップパス:ポリゴン(50%0%、100 0%、0 0%)などです。知らせ

スタイリングは、CSSとは異なるリンクを訪問しました スタイリングは、CSSとは異なるリンクを訪問しました Jul 11, 2025 am 03:26 AM

アクセスしたリンクのスタイルを設定すると、特にコンテンツ集約型のWebサイトでユーザーエクスペリエンスを向上させることができ、ユーザーがより良いナビゲートを支援します。 1。CSSを使用してください:訪問した擬似クラスは、色の変化などの訪問されたリンクのスタイルを定義します。 2。ブラウザは、プライバシーの制限により、いくつかの屬性の変更のみを許可することに注意してください。 3.突然の狀態(tài)を避けるために、色の選択は全體的なスタイルと調(diào)整する必要があります。 4.モバイル端子はこの効果を表示しない場合があり、アイコン補助ロゴなどの他の視覚的なプロンプトと組み合わせることをお勧めします。

CSSを使用して応答性のある畫像を作成する方法は? CSSを使用して応答性のある畫像を作成する方法は? Jul 15, 2025 am 01:10 AM

CSSを使用してレスポンシブ畫像を作成するには、主に次の方法で達成できます。1。最大幅を使用してください:100%と高さ:自動化して、割合を維持しながら畫像がコンテナ幅に適応できるようにします。 2。HTMLのSRCSETおよびサイズの屬性を使用して、異なる畫面に適合した畫像ソースをインテリジェントにロードします。 3.オブジェクトフィットとオブジェクトポジションを使用して、畫像のトリミングとフォーカスディスプレイを制御します。一緒に、これらの方法により、畫像がさまざまなデバイスで明確かつ美しく表示されるようになります。

CSSユニットの分解:PX、EM、REM、VW、VH比較 CSSユニットの分解:PX、EM、REM、VW、VH比較 Jul 08, 2025 am 02:16 AM

CSSユニットの選択は、設計要件と応答性の要件に依存します。 1.PXは固定サイズに使用され、正確な制御に適していますが、弾力性の欠如に適しています。 2.EMは相対単位であり、親要素の影響によって簡単に引き起こされますが、REMはルート要素に基づいてより安定しており、グローバルなスケーリングに適しています。 3.VW/VHは、レスポンシブデザインに適したビューポートサイズに基づいていますが、極端な畫面の下でのパフォーマンスに注意を払う必要があります。 4.選択するときは、応答性の調(diào)整、要素階層関係、ビューポートの依存関係に基づいて決定する必要があります。合理的な使用は、レイアウトの柔軟性とメンテナンスを改善できます。

一般的なCSSブラウザの矛盾とは何ですか? 一般的なCSSブラウザの矛盾とは何ですか? Jul 26, 2025 am 07:04 AM

さまざまなブラウザのCSS解析に違いがあるため、主にデフォルトのスタイルの違い、ボックスモデルの計算方法、フレックスボックスおよびグリッドレイアウトサポートレベル、および特定のCSS屬性の一貫性のない動作を含む一貫性のないディスプレイ効果が得られます。 1.デフォルトのスタイル処理は一貫性がありません。解決策は、cssresetまたはremormize.cssを使用して初期スタイルを統(tǒng)合することです。 2。IEの古いバージョンのボックスモデル計算方法は異なります。 Box-Sizing:Border-Boxを統(tǒng)一された方法で使用することをお勧めします。 3. FlexBoxとグリッドは、エッジの場合や古いバージョンでは異なる機能を示します。より多くのテストを行い、Autoprefixerを使用します。 4.一部のCSS屬性の動作は一貫性がありません。 Caniuseは相談して格下げする必要があります。

See all articles