Vueコンポーネント登録方法の解釈

Vueコンポーネント登録方法の解釈

概要

コンポーネント化の概念により、フロントエンド ページの開発に明確な構造が与えられます。

Vue のコンポーネントは、Vue のインスタンス オブジェクトです。したがって、Vue コンポーネントの構築オプションは、Vue インスタンスを構築するための new Vue() メソッドの構築オプションと同じであり、許容される構築オプションも同じです。 el などのルートインスタンス固有のオプションを除きます。ただし、Vue コンポーネントは再利用可能である必要があるため、構築オプションのデータ オプションはオブジェクトを返す関数である必要があります。

コンポーネントの再利用性を確保するために、データ オプションをオブジェクトを返す関数にできるのはなぜですか?

new Vue() メソッドを使用して Vue インスタンスを作成する場合でも、Vue コンポーネントを定義して Vue インスタンスを作成する場合でも、実行される操作は、構築オプションのプロパティ値を新しく作成された Vue インスタンス オブジェクトに直接割り当てることです。コンポーネントの再利用とは、Vue が同じ構築オプションを使用して、同じ名前だがアドレスが異なる複数の Vue インスタンス オブジェクトを構築することを意味します。 Vue コンポーネントを定義するときの構築オプションのデータ オプションがオブジェクトである場合、データ オブジェクトのアドレスがコンポーネントの Vue インスタンスに直接割り当てられるため、コンポーネントが再利用されると、複数のコンポーネントがデータ オブジェクトを共有することになります。ただし、コンポーネントを定義するときのデータ オプションが関数の場合、Vue は構築オプションに従ってコンポーネントを作成するときに関数を実行し、オブジェクトを取得します。このように、データ オブジェクトは Vue インスタンスが作成されるたびに再生成されます。そのため、複数のコンポーネントはそれぞれ独自のデータ オブジェクトを持ち、互いに影響を与えることはありません。

実際には、コンポーネントが登録されると、コンポーネントの構築オプションが定義され、コンポーネントが使用されるときに対応する Vue コンポーネント インスタンスが実際に作成されます。

1. グローバル登録

グローバルに登録されたコンポーネントは、Vue ルートインスタンスとすべての子コンポーネントで使用できます。登録エントリは Vue.component() 関数です。一度登録しておけばいつでも使用できます。登録方法は以下の通りです。

Vue.component('コンポーネント名', { 
    オプション 
})

次に例を示します。

//メイン.js
//この例は、vue-cli で作成されたプロジェクトです。デフォルトでは vue の不完全なバージョンであり、テンプレート オプションは使用できないため、render 関数を使用してコンポーネント コンテンツを書き込みます。
Vue.component('all-test',{
  データ(){
    戻る {
      x: 「私はグローバルコンポーネントです」
    }
  },
  レンダリング(h){
    h('div',this.x) を返します
  }
})

//グローバルに登録されたコンポーネントは直接使用できます //App.vue
<テンプレート>
  <div id="アプリ">
    <全テスト />
  </div>
</テンプレート>

2. 現地登録

ローカル登録では、プレーンな JavaScript オブジェクトを介してコンポーネントを定義します。次に、コンポーネントに名前が付けられ、Vue インスタンス構築オプションのコンポーネント オプションに登録されます。

コンポーネント = { オプション }

//new Vue はルート要素 Vue インスタンスを作成します new Vue({
    el: '#app'
    コンポーネント:
        'my-component-name': コンポーネント
    }
})

//または、Vueコンポーネントによって作成されたVueインスタンスを登録します export default {
    コンポーネント:
        'my-component-name': コンポーネント
    }
}

次に例を示します。

//アプリ.vue
<テンプレート>
  <div id="アプリ">
    <全テスト />
    <コンポーネント-a />
    <コンポーネント-b />
  </div>
</テンプレート>

<スクリプト>
ComponentA = {
  データ(){
    戻る {
      x: 「私はローカルコンポーネントAです」
    }
  },
  レンダリング(h){
    h('div',this.x) を返します
  }
}

エクスポートデフォルト{
  名前: 'アプリ'、
  コンポーネント:
    'コンポーネント-a': コンポーネントA、
    'コンポーネント-b': {
        データ(){
          戻る {
            x: 「私はローカルコンポーネントBです」
          }
        },
        レンダリング(h){
          h('div',this.x) を返します
        }
    } 
  }
}
</スクリプト>

3. モジュールシステムへのローカル登録

Babel や webpack などのモジュール システムでは、import と export を使用して、コンポーネント構築オプション オブジェクトまたは構築オプションに対応する *.vue ファイルをインポートできます。

//c.js
エクスポートデフォルト{
    データ(){
        戻る {
          x: '私はc.jsファイルによって個別にエクスポートされたコンポーネント構築オプションオブジェクトです'
        }
      },
      レンダリング(h){
        h('div',this.x) を返します
      }
}

//D.vue
<テンプレート>
    <div>
        {{x}}
    </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
    データ(){
        戻る {
            x: '私はD.vueファイルによってエクスポートされたコンポーネントです'
        }
    }
}
</スクリプト>

//アプリ.vue
<テンプレート>
  <div id="アプリ">
    <C />
    <D />
  </div>
</テンプレート>

'./c.js' から C をインポートします
'./components/D.vue' から D をインポートします。

エクスポートデフォルト{
  名前: 'アプリ'、
  コンポーネント:
    C、
    だ 
  }
}
</スクリプト>

以上がVueコンポーネント登録方法の詳細な解説です。Vueコンポーネント登録方法についての詳細は、123WORDPRESS.COMの他の関連記事にも注目してください。

以下もご興味があるかもしれません:
  • Vue でコンポーネントを一括インポート、登録、使用する方法
  • vueは基本コンポーネントの自動グローバル登録を実装します
  • Vue コンポーネント登録の完全分析
  • Vueコンポーネント登録の詳細な説明
  • Vueコンポーネント登録例の詳しい説明
  • Vueコンポーネントとコンポーネント登録方法についての簡単な説明
  • Vue でコンポーネントを登録するいくつかの方法のまとめ
  • Vue コンポーネントの構成構造とコンポーネント登録の詳細

<<:  Ubuntu 基本チュートリアル: apt-get コマンド

>>:  Mysql で group_concat の長さ制限を変更する方法

推薦する

MySQL データベースのインデックス順序の詳細な説明

目次事件の原因解剖学ファイルの並べ替えファイルのソートが非常に遅いのですが、他に解決策はありますか?...

Linux でハイパースレッディング技術を動的に有効/無効にする方法の詳細な説明

序文Intel のハイパースレッディング テクノロジーにより、1 つの物理コア上で 2 つのスレッド...

Linux で独自の Nexus プライベート サーバーを構築する方法

この記事では、Linuxサーバー上でDockerを使用してNexusプライベートサーバーを構築する方...

MySQL からエクスポートされた scv ファイル内の文字化けやジャンプ行の問題をすばやく解決します

仕事上の理由により、完全なオンライン化(​​つまり、すべてのデータがオンラインで完了し、インポートや...

MySQL8インストーラーバージョングラフィックチュートリアル

インストール必要な書類は下部に記載されていますステップ1 mysql-installer-web-c...

MySQL 8.0 パスワード有効期限ポリシーの詳細な説明

MySQL 8.0.16 以降では、パスワードの有効期限ポリシーを設定できます。今日は、この小さな知...

ページ内の検索エンジンの呼び出しはBaiduを例に挙げています

今日、突然、自分のウェブページで Google や Baidu のような強力な検索エンジンを呼び出す...

MySQLの高可用性と高パフォーマンスのクラスタを構築する方法

目次MySQL NDB Clusterとはクラスター構築のための準備作業クラスターのデプロイを開始す...

ウェブデザインにおけるインタラクション: ページングの問題に関する簡単な説明

機能: 前のページまたは次のページにジャンプします。要素: ページングの基本要素は、前のページ + ...

CSSで検索ボックスを非表示にする機能を実装します(アニメーション順方向と逆方向のシーケンス)

上部のメニュー バーに検索ボックスを配置するのは一般的なシナリオですが、検索機能がそれほど頻繁に使用...

Unix/Linuxフォークの隠れたオーバーヘッド

目次1. フォークの起源2. 初期のUNIXオーバーレイ技術3. UNIXに導入される前のフォークの...

横スクロールウェブサイトデザインの概要

水平スクロールはあらゆる状況に適しているわけではありませんが、適切に行えば、Web サイトを他のサイ...

Vue フォーム入力バインディング v-model

目次1.vモデル2. プロパティとイベントのバインディング3. フォーム要素のバインディング3.1 ...

初心者向け入門チュートリアル④:サブディレクトリのバインド方法

これが何を意味するのかを理解するには、まずサブディレクトリとは何かを知る必要があります。では、サブデ...

MySQL の 4 つのトランザクション分離レベルを例を使って分析する

序文データベース操作では、同時データ読み取りの正確性を効果的に保証するために、トランザクション分離レ...