Vue コンポーネントの構成構造とコンポーネント登録の詳細

Vue コンポーネントの構成構造とコンポーネント登録の詳細

1. コンポーネントの構成

通常、アプリケーションはネストされたコンポーネント ツリーとして構成されます。

たとえば、ヘッダー、サイドバー、コンテンツ領域などのコンポーネントがあり、それぞれにナビゲーション リンクやブログ投稿などの他のコンポーネントが含まれている場合があります。

テンプレートで使用するには、まずこれらのコンポーネントを登録して、 Vue認識できるようにする必要があります。コンポーネント登録には、グローバル登録とローカル登録の 2 種類があります。

これまでのところ、コンポーネントはすべてVue.componentを通じてグローバルに登録されています。

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


グローバルに登録されたコンポーネントは、登録後、コンポーネント ツリー内のすべての子コンポーネントのテンプレートを含め、新しく作成されたVueルート インスタンス ( new Vue経由) で使用できます。

2. コンポーネント名

コンポーネントを登録するときは、必ず名前を付ける必要があります。たとえば、グローバルに登録すると次のようになります。

Vue.component('コンポーネント名', { /* ... */ })


コンポーネント名はVue.componentの最初のパラメータです。

2.1 コンポーネントの命名

コンポーネント名を定義する方法は 2 つあります。

  • ハイフンで区切られた名前: my-component-name
  • 名前の最初の文字を大文字にします: MyComponentName

ハイフンで区切られた名前

Vue.component('コンポーネント名', { /* ... */ })

(ハイフンで区切られた名前)を使用してコンポーネントを定義する場合、例: <my-component-name></my-component-name>

最初の文字を大文字にする

Vue.component('MyComponentName', { /* ... */ })

(最初の文字を大文字にする) を使用してコンポーネントを定義する場合、カスタム要素を参照するときにどちらかの命名規則を使用できます。つまり、 <my-component-name><MyComponentName>両方が許容されます。

注:ただし、DOM 内で直接使用される場合 (つまり、文字列以外のテンプレートの場合)、ハイフンで区切られた名前のみが有効です。

3. グローバル登録

グローバル登録では、Vue.component を使用してコンポーネントを作成します。

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

これらのコンポーネントはグローバルに登録されています。つまり、登録後に新しく作成されたVueルートインスタンス ( new Vue ) のテンプレートで使用できるということです。

例えば:

<div id="アプリ">
  <コンポーネント-a></コンポーネント-a>
  <コンポーネント-b></コンポーネント-b>
  <コンポーネント-c></コンポーネント-c>
</div>

Vue.component('component-a', { /* ... */ })
Vue.component('component-b', { /* ... */ })
Vue.component('component-c', { /* ... */ })

新しい Vue({ el: '#app' })

ただし、実際のプロジェクトではグローバル登録はあまり使用されません。

4. 部分登録

グローバル登録は最適ではないことがよくあります。たとえば、 webpackのようなビルド システムを使用する場合、すべてのコンポーネントをグローバルに登録すると、コンポーネントを使用しなくなった場合でも、最終ビルドにそのコンポーネントが引き続き含まれることになります。その結果、ユーザーがダウンロードしなければならないJavaScriptの量が不必要に増加します。

このような場合は、プレーンなJavaScriptオブジェクトを介してコンポーネントを定義できます。

ComponentA = {
    テンプレート: `<p>hello</p>`
  }
コンポーネントB = {
  テンプレート: `<p>world</p>`
}


次にcomponentsオプションで使用するコンポーネントを定義します。

新しいVue({
  el: '#app',
  コンポーネント:
    'コンポーネント-a': コンポーネントA、
    'コンポーネント-b': コンポーネントB
  }
})

componentsオブジェクト内の各propertyでは、 property名はカスタム要素の名前であり、 property値はこのコンポーネントのオプション オブジェクトです。

もちろん、実際の開発プロセスでは、モジュール システムを使用してさらに多くのコンポーネントを登録しますが、これについては後で紹介します。

Vueコンポーネントの構成構造とコンポーネント登録の詳細についての記事はこれで終わりです。Vueコンポーネントの構成構造とコンポーネント登録に関するより関連のある内容については、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。皆様、今後とも123WORDPRESS.COMを応援してください!

以下もご興味があるかもしれません:
  • Vue.js でタブ コンポーネントを実装する方法
  • Vue.JS でアイコン コンポーネントを使用する方法
  • Vueコンポーネントをカスタマイズする4つの方法の詳細な説明
  • Vue で AIlabel を使用してコンポーネントにラベルを付ける方法

<<:  MySQL 文字列分割の例 (区切り文字なしの文字列抽出)

>>:  自動ヘルスレポートを実現するDocker+Selenium方式

推薦する

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

Dockerスペースがいっぱいでコンテナに入れない場合の解決策

トラブル発生が突然で、業務も迫っていたため、現場のスクリーンショットを撮る時間がありませんでしたので...

Vue要素はテーブルの追加、削除、データの変更を実装します

この記事では、テーブル内のデータを追加、削除、変更するためのvue要素の具体的なコードを参考までに共...

XHTML 入門チュートリアル: シンプルな Web ページの作成

1 分で最初の Web ページを作成します。簡単な Web ページを作ってみましょう。ぜひフォローし...

MySQL で削除されたレコードが有効にならない理由のトラブルシューティング

オンライン MySQL トランザクションの問題の記録先週の金曜日、大きなテーブルを削除する操作を実行...

nginxコンテナ設定ファイルの独立した実装

コンテナを作成する [root@server1 ~]# docker run -it --name ...

mysql8.0.12 でルートパスワードをリセットする方法

データベースをインストールした後、誤ってインストール ウィンドウを閉じたり、長期間 root ユーザ...

フォーム入力ボックスに関するWebデザインのヒント

この記事では、Web デザインにおけるフォーム入力ボックスに関するヒントとコードをいくつか紹介します...

HTML ページで JSON データを表示およびフォーマットする方法

JSONデータはHTMLページ上に表示されフォーマットされます1. 表示効果図説明:すべてのキー値は...

AWS無料サーバーアプリケーションとネットワークプロキシ設定チュートリアルの詳細な説明

目次予防必要条件AWSアカウントを申請する仮想マシンの申請と有効化仮想マシンを申請するセキュリティグ...

pdf.js を使用して Vue で PDF ファイルをプレビューする方法

ページ上で PDF をプレビューすると、一部のファイルは印刷またはダウンロードできません。現時点では...

CSSを使用して画像フレームアニメーションと曲線の動きを実装する

すべてのアニメーションの基本原理は、対応する画像を短時間で次々に表示し、視覚的に動いているように見せ...

MySQL の最適化: InnoDB の最適化

勉強の計画は簡単に中断され、継続するのが困難です。先日、社内で事業の方向性を調整するための会議があり...

Docker ベースの GitLab 環境をデプロイする方法と手順

注意:仮想マシンのメモリは2G以上が推奨され、 Alibaba Cloudのアクセラレーションイメー...

TCPパフォーマンスチューニングの実装原理とプロセス分析

3ウェイハンドシェイクフェーズクライアントSYNパケットの再試行回数sysctl -w net.ip...