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方式

推薦する

NodeJSのモジュール性に関する詳細な説明

目次1. はじめに2. 本文2.1 モジュールとは何ですか? 2.2 解決2.3、require.r...

シャドウソックスを使用してLAN透過ゲートウェイを構築する

目次dnsmasq をインストールして設定するChinaDNS をインストールして設定するshado...

Linux で SSH サーバー エイリアスを作成する 2 つの方法

序文SSH 経由でさまざまなリモート システムに頻繁にアクセスする場合は、このトリックを使用すると時...

Vueページの画像が表示されない問題の解決方法

新しいバージョンの設定インターフェースを作る際に、vueフレームワークを使用して実装しました。ページ...

レム適応の一般的なパッケージ3つについて

序文以前、rem適応についての記事を書きましたが、具体的なパッケージは紹介しませんでした。今日は、よ...

CSS3 で作成したホバーズーム効果

結果:実装コード: html <link href='https://fonts.go...

Vueオプションの詳細な説明

目次1. オプションとは何ですか? 2. 含まれる属性3. エントリー属性エルデータ方法コンポーネン...

MySQL クエリのソートとクエリ集計関数の使用法の分析

この記事では、例を使用して、MySQL クエリのソート関数とクエリ集計関数の使用方法を説明します。ご...

2019 年に最も役立ち重要なオープンソース ツール トップ 10

Black Duck の 2017 年のオープンソース調査では、回答者の 77% がオープンソース...

CentOS7 64 ビットでの MySQL 5.7 のインストールと設定のチュートリアル

インストール環境: CentOS7 64ビットMINI版、MySQL5.7をインストール1. YUM...

ウェブページで任意のフォントを使用する実践的な操作とデモ

以前、「Web ページにシステムに組み込まれていないフォントを埋め込む」という研究をしたことがありま...

ウェブページで CSS スタイルを適用するさまざまな形式の概要

1. インライン スタイル (<body></body> 内に配置されます)...

Docker で Jenkins サービスを構築する例

画像をプルする root@EricZhou-MateBookProX: docker pull je...

VMWare を使用して Windows 上で Linux 環境を構築する手順 (画像とテキスト)

Mac を返却して以来、元のラップトップは使用されていません。このラップトップの構成は非常に良好で...

CSSは、マウスを線の上に置くと線全体の色を変える効果を実現します。

まとめ:以下のように、CSS で指定した行にマウスを置いたときに行全体の色を変更する方法を示します。...