目次
コンポーネントのネスト
ホームページ ウェブフロントエンド Vue.js Vue はコンポーネントのネストとコンポーネント スタイル管理をどのように実装しますか?

Vue はコンポーネントのネストとコンポーネント スタイル管理をどのように実装しますか?

Jun 27, 2023 pm 03:33 PM
vue コンポーネントのネスト スタイル管理

Vue.js は、データ駆動型で応答性の高い更新ビューを備えた軽量の JavaScript フレームワークです。 Vue.js の中核となる概念はコンポーネント化であり、ボタン、フォーム、モーダル ボックスなどのコンポーネントを自由に組み合わせたり、小さなコンポーネントに分割したりできます。 Vue.js のコンポーネントのネストとスタイル管理はコンポーネント開発において必須の知識ですが、この記事では Vue でコンポーネントのネストとスタイル管理を実装する方法について詳しく説明します。

コンポーネントのネスト

コンポーネントのネストとは、あるコンポーネントを別のコンポーネントの中に配置して親子コンポーネント関係を形成し、親コンポーネントを介して子コンポーネントにデータを渡すことを指します。また、子コンポーネントは親コンポーネントにデータを送信する コンポーネントはデータを渡してコンポーネント間の通信を実現します。 Vue.js は、親コンポーネントの中に子コンポーネントのテンプレートを導入するだけで、コンポーネントのネストを実装するのに非常に便利です。以下は簡単な例です:

<template>
  <div>
    <h1>父组件</h1>
    <child-component></child-component>
  </div>
</template>

<script>
import childComponent from './childComponent.vue'

export default {
  components: {
    'child-component': childComponent
  }
}
</script>
ログイン後にコピー

上記のコードは親コンポーネントであり、import を通じてサブコンポーネントを導入し、そのサブコンポーネントを components## に登録します。 #. 親コンポーネント内で子コンポーネントを使用します。コンポーネントのネストは、 を使用して、親コンポーネントに子コンポーネントのテンプレートを導入することで実現できます。

子コンポーネントでは、通常、親コンポーネントからデータを取得します。 Vue.js の親コンポーネントと子コンポーネント間のデータ転送は、主に

props$emit の 2 つの方法で実装されます。 props は、親コンポーネントが子コンポーネントにデータを渡し、子コンポーネントが props を受け取ることで親コンポーネントから渡されたデータを取得することを意味します。以下は、単純な props の例です。

<template>
  <div>
    <h2>子组件</h2>
    <p>父组件的名字是:{{ name }}</p>
  </div>
</template>

<script>
export default {
  props: ['name']
}
</script>
ログイン後にコピー

上記のコードは、名前付き

name から props 属性を定義するサブコンポーネントです。親コンポーネントが子コンポーネントにデータを渡すと、そのデータは name 属性を通じて渡されます。子コンポーネントのテンプレートでは、親コンポーネントから {{ name }} を通じて渡されたデータを取得できます。

親コンポーネントから子コンポーネントにデータを渡す場合、

v-bind ディレクティブを通じてデータを渡すことができます。以下に示すように:

<template>
  <div>
    <h1>父组件</h1>
    <child-component :name="fatherName"></child-component>
  </div>
</template>

<script>
import childComponent from './childComponent.vue'

export default {
  data () {
    return {
      fatherName: '张三'
    }
  },
  components: {
    'child-component': childComponent
  }
}
</script>
ログイン後にコピー

親コンポーネントで、親コンポーネントの名前を保存するために

fatherName という名前の変数を定義します。子コンポーネントでは、props を介して fatherName を受け取ります。

コンポーネント スタイル管理

コンポーネント スタイル管理とは、各コンポーネントのスタイルが相互に影響を及ぼさず、保守が容易になるように、Vue.js でコンポーネントのスタイルを管理する方法を指します。 Vue.js では、コンポーネント スタイルを管理する 2 つの方法、スコープ スタイルと CSS モジュールを提供します。

スコープ スタイル

スコープ スタイルとは、コンポーネント スタイルが現在のコンポーネントに対してのみ有効になるように、

scoped 属性を使用してコンポーネント内のスタイルを定義することを指します。例:

<template>
  <div class="component">
    <h2 class="title">标题</h2>
  </div>
</template>

<style scoped>
.component {
  background-color: #f5f5f5;
  padding: 20px;
  border-radius: 5px;
}

.title {
  color: #333;
  font-size: 18px;
  margin-bottom: 10px;
}
</style>
ログイン後にコピー

このコンポーネントでは、

scoped 属性をスタイル タグに追加しました。つまり、stylescoped です。この方法で定義されたスタイルは、現在のコンポーネントに対してのみ有効であり、他のコンポーネントやグローバル スタイルには影響しません。

スコープ スタイルを使用する場合には、ディープ セレクターがサポートされないという欠点があります。コンポーネントでディープ セレクターを使用する場合は、次に示すように、セレクターの前に

/deep/ または >>> を追加する必要があります。 上記のコードでは、

.component

のスタイル定義と .sub-title# のスタイルで /deep/ .sub-component を使用しています。 ##>>> は定義で使用されます。これにより、スコープ スタイルで深さセレクターを定義できるようになります。 CSS モジュール

CSS モジュールは、CSS をモジュール化して名前を付けることで、各コンポーネントのスタイルが独立していることを確認できるモジュール式 CSS ソリューションです。 Vue.js は CSS モジュールのサポートを提供しており、各コンポーネントで独立した CSS モジュールを使用できます。

まず、

css-loader

style-loader をインストールし、Webpack 設定ファイルに CSS モジュールに関する設定を追加する必要があります:

<template>
  <div class="component">
    <h2 class="title">标题</h2>
    <div class="sub-component">
      <span class="sub-title">子标题</span>
    </div>
  </div>
</template>

<style scoped>
.component {
  /deep/ .sub-component {
    background-color: #f1f1f1;
  }
  >>> .sub-title {
    color: red;
  }
}
</style>
ログイン後にコピー
上記のコードでは、modules

css-loader の設定に追加し、CSS モジュールが有効であることを示しています。 cssModules 属性が vue-loader の構成に追加され、CSS モジュールが Vue.js の単一ファイル コンポーネントで有効であることを示します。 単一ファイル コンポーネントでは、scoped

属性を通じて CSS モジュール名を指定できます。

// webpack.conf.js
module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /.css$/,
        loader: 'style-loader!css-loader?modules'
      },
      {
        test: /.vue$/,
        loader: 'vue-loader',
        options: {
          cssModules: {
            localIdentName: '[name]-[hash]',
            camelCase: true
          }
        }
      }
    ]
  }
  // ...
}
ログイン後にコピー
上記のコードでは、module

属性を

style タグに追加し、これが CSS モジュールであることを示しています。 CSS では、スコープ付きスタイルやディープ セレクターを使用せずに、従来の方法でスタイルを定義できます。 CSS モジュールをコンポーネントに導入するときは、以下に示すように、$style

オブジェクトを使用する必要があります。

<template>
  <div class="component">
    <h2 class="title">标题</h2>
  </div>
</template>

<style module>
.component {
  background-color: #f5f5f5;
  padding: 20px;
  border-radius: 5px;
}

.title {
  color: #333;
  font-size: 18px;
  margin-bottom: 10px;
}
</style>
ログイン後にコピー
上記のコードでは、 を使用します。 $style.title は、このコンポーネントで定義されている

title スタイルを参照します。 概要: Vue.js では、コンポーネント スタイルを管理する 2 つの方法、スコープ スタイルと CSS モジュールを提供します。スコープ付きスタイルは単純なスタイルに適していますが、CSS モジュールは CSS をモジュール化して各コンポーネントのスタイルが独立しているようにするコンポーネント化されたアプリケーションに適しています。

以上がVue はコンポーネントのネストとコンポーネント スタイル管理をどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

vue.jsでJSファイルを参照する方法 vue.jsでJSファイルを参照する方法 Apr 07, 2025 pm 11:27 PM

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

VueでWatchの使用方法 VueでWatchの使用方法 Apr 07, 2025 pm 11:36 PM

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

VUEのボタンに関数を追加する方法 VUEのボタンに関数を追加する方法 Apr 08, 2025 am 08:51 AM

HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

Vueはマーキー/テキストスクロール効果を実現します Vueはマーキー/テキストスクロール効果を実現します Apr 07, 2025 pm 10:51 PM

CSSアニメーションまたはサードパーティライブラリを使用して、VUEでマーキー/テキストスクロール効果を実装します。この記事では、CSSアニメーションの使用方法を紹介します。スクロールテキストを作成し、テキストを&lt; div&gt;をラップします。 CSSアニメーションを定義し、オーバーフローを設定します:非表示、幅、アニメーション。キーフレームを定義し、アニメーションの開始と終了時にtranslatex()を設定します。期間、スクロール速度、方向などのアニメーションプロパティを調整します。

怠zyなロードVUEとはどういう意味ですか? 怠zyなロードVUEとはどういう意味ですか? Apr 07, 2025 pm 11:54 PM

Vue.jsでは、Lazy Loadingを使用すると、コンポーネントまたはリソースを必要に応じて動的にロードすることができ、初期ページの読み込み時間を短縮し、パフォーマンスを改善できます。特定の実装方法には、&lt; Keep-Alive&gt;および&lt;コンポーネントは&gt;コンポーネント。怠zyなロードは、FOUC(スプラッシュ画面)の問題を引き起こす可能性があり、不必要なパフォーマンスのオーバーヘッドを避けるために怠zyなロードが必要なコンポーネントにのみ使用する必要があることに注意してください。

Vueのバージョンを照会する方法 Vueのバージョンを照会する方法 Apr 07, 2025 pm 11:24 PM

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 &lt; script&gt;でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

Vueによる前のページに戻る方法 Vueによる前のページに戻る方法 Apr 07, 2025 pm 11:30 PM

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes&lt; router-link to =&quot;/&quot; Component Window.history.back()、およびメソッド選択はシーンに依存します。

See all articles