vue.jsのコンポーネントアーキテクチャにより、ユーザーインターフェイスの構築が効率的かつ便利になります。アプリケーションをより小さく、再利用可能なコンポーネントに分解し、これらのコンポーネントでより複雑な構造を構築することができます。
このガイドは、Vueコンポーネントの高度な紹介を提供します。コンポーネントの作成方法、コンポーネント間でデータを渡す方法(小道具とイベントバスを介して)、およびVueの<slot></slot>
要素を使用してコンポーネント内で追加のコンテンツをレンダリングする方法について説明します。各例には、実行可能なCodepenデモが付属しています。
キーポイント
- Vueのコンポーネントアーキテクチャは、UIを再利用可能で管理しやすいスニペットに分解し、それによってコードの再利用性と組織を高めるのに役立ちます。
- コンポーネントは、
Vue.component
または単一ファイルコンポーネントでローカルに使用できます。 - データは、小道具を使用してサブコンポーネントに渡すことができ、コンポーネントツリーのデータを管理および渡すための明確で構造化された方法を提供します。
- イベントバスを使用して、子供のコンポーネントから親コンポーネントまでの通信を効果的に管理し、子コンポーネントがコンポーネント階層にデータを送信できるようにします。
- vueの
<slot></slot>
要素は、コンポーネント内のネストコンテンツをより柔軟にし、親コンポーネントからコンテンツを受信できるようにします。これは、フォールバックコンテンツで上書きできます。
vue
でコンポーネントを作成する方法コンポーネントは、本質的に再利用可能なVUEインスタンスである名前です。 VUEアプリケーションでコンポーネントを作成する方法はたくさんあります。たとえば、小規模から中規模のプロジェクトでは、次のようにVue.component
メソッドを使用してグローバルコンポーネントを登録できます。
Vue.component('my-counter', { data() { return { count: 0 } }, template: `<div>{{ count }}</div>` }) new Vue({ el: '#app' })コンポーネントの名前は
です。次のように使用できます:my-counter
my-custom-component
MyCustomComponent
コンポーネントテンプレートを定義する方法はいくつかあります。上記では、テンプレートリテラルを使用しましたが、DOM内のまたはテンプレートを備えたマーカーを使用することもできます。テンプレートを定義するさまざまな方法の詳細については、こちらをご覧ください。
単一のファイルコンポーネントdata
、.vue
<template></template>
を含む拡張機能を備えた単一のファイルです。
およびMyCounterコンポーネントは次のようになる場合があります
Vue.component('my-counter', { data() { return { count: 0 } }, template: `<div>{{ count }}</div>` }) new Vue({ el: '#app' })ご覧のとおり、単一のファイルコンポーネントを使用する場合、それらを必要とするコンポーネントに直接インポートして使用できます。
このガイドでは、
メソッドを使用してコンポーネントを登録して、すべての例を表示します。
Vue.component()
単一ファイルコンポーネントを使用するには、多くの場合、構築ステップ(たとえば、Vue CLIの使用)が含まれます。詳細については、このVueシリーズで「Vue Cli Getsing Guide」をチェックしてください。
を介してデータをコンポーネントに転送します プロップを使用すると、親コンポーネントから子コンポーネントにデータを渡すことができます。これにより、コンポーネントをより小さなチャンクに分割して、特定の機能を処理できます。たとえば、ブログコンポーネントがある場合は、著者の詳細、詳細(タイトル、ボディ、画像)、コメントなどの情報を表示することができます。
これらを子供のコンポーネントに分割して、各コンポーネントが特定のデータを処理し、コンポーネントツリーを次のようにすることができます。
コンポーネントを使用することの利点をまだ信じていない場合は、この組み合わせがどれほど役立つかを理解してください。将来このコードを再訪したい場合は、ページの構築方法と、どの機能(つまり、どのコンポーネント)を探す必要があるかをすぐに明確にします。また、インターフェイスを組み合わせるこの宣言的な方法により、コードベースに精通していない人が迅速に開始し、効率を向上させることが容易になります。
<div> <my-counter></my-counter> </div>すべてのデータは親コンポーネントから渡されるため、次のようになる場合があります。
上記の例コンポーネントでは、著者の詳細を定義し、情報を投稿します。次に、子コンポーネントを作成する必要があります。チャイルドコンポーネントに名前を付けましょう
。したがって、私たちのHTMLテンプレートは次のようになります:
<template> <div>{{ count }}</div> </template> <🎜>
著者オブジェクトを子どものコンポーネントに渡しますauthor-detail
。ここでは、違いに注意を払う必要があります。チャイルドコンポーネントでは、
<blogpost> <authordetails></authordetails> <postdetails></postdetails> <comments></comments> </blogpost>と呼ばれ、親コンポーネントで定義します。
このデータにアクセスするには、owner
コンポーネントで小道具を宣言する必要があります:owner
author
author-detail
間違った小道具の種類を渡すと、以下に示したものと同様のコンソールにエラーが表示されます。
new Vue({ el: '#app', data() { return { author: { name: 'John Doe', email: 'jdoe@example.com' } } } })VUE文書には、小道具検証を理解するために使用できる公式ガイドがあります。
イベントバスを介して、子供のコンポーネントから親コンポーネントへの子供のコンポーネントからの通信
<div> <author-detail :owner="author"></author-detail> </div>
イベントは、選択したイベントが発生したときにトリガーされるラッパーメソッドを作成することにより処理されます。レビューするには、最初のカウンターの例に基づいて拡張して、ボタンがクリックされるたびに増加するようにしましょう。
私たちのコンポーネントは次のようになります:
Vue.component('my-counter', { data() { return { count: 0 } }, template: `<div>{{ count }}</div>` }) new Vue({ el: '#app' })
および私たちのテンプレート:
<div> <my-counter></my-counter> </div>
この希望は十分に簡単です。ご覧のとおり、ボタンがクリックされるたびにカスタムonClick
メソッドをトリガーするためにincrease
イベントに接続しています。次に、increase
メソッドは、count
データ属性を増加させます。次に、例を展開し、カウンターボタンを別のコンポーネントに移動し、親コンポーネントにカウントを表示しましょう。イベントバスを使用してこれを行うことができます。
イベントバスは、子コンポーネントから親コンポーネントに通信したい場合に非常に便利です。これは、親コンポーネントから子コンポーネントまでのデフォルトの通信方法に反します。アプリケーションがVuexを必要としないほど大きくない場合は、イベントバスを使用できます。 (このVueシリーズの「Vuex Getsing Guide」で詳細を読むことができます。)
したがって、私たちがしなければならないことは次のとおりです。カウントは親コンポーネントで宣言され、子コンポーネントに渡されます。次に、チャイルドコンポーネントで、count
の値を増やし、親コンポーネントの値が更新されていることを確認します。
アプリコンポーネントは次のようになります:
<template> <div>{{ count }}</div> </template> <🎜>
その後、子コンポーネントでは、小道具を通じてカウントを受け取り、それを増やす方法を持ちたいと考えています。子供のコンポーネントにcount
の値を表示したくありません。子コンポーネントからインクリメントして、親コンポーネントに反映させたいだけです。
<blogpost> <authordetails></authordetails> <postdetails></postdetails> <comments></comments> </blogpost>テンプレートは次のようになります
そのような値を増やそうとすると、機能しません。それが機能するためには、子供のコンポーネントからイベントを発行し、
new Vue({ el: '#app', data() { return { author: { name: 'John Doe', email: 'jdoe@example.com' } } } })の新しい値を送信し、親コンポーネントでこのイベントを聞く必要があります。
count
最初に、新しいVueインスタンスを作成し、
に設定します
eventBus
<div> <author-detail :owner="author"></author-detail> </div>
イベント
Vue.component('author-detail', { template: ` <div> <h2 id="owner-name">{{ owner.name }}</h2> <p>{{ owner.email }}</p> </div> `, props: ['owner'] })メソッドが呼び出されるたびに。メインコンポーネントのイベントを聞き、放出されたイベントから得られる価値に
を設定する必要があります。
increment
count
Vueの
Vue.component('author-detail', { template: ` <div> <h2 id="owner-name">{{ owner.name }}</h2> <p>{{ owner.email }}</p> </div> `, props: { owner: { type: Object, required: true } } })
アプリケーションが複雑でない場合は、イベントバスを使用するのは良いことですが、アプリケーションが成長するにつれて、代わりにVuexを使用することをお勧めします。 created
スロットのネストされたコンポーネントで内容を使用します
これまで見た例では、コンポーネントは自己閉鎖要素です。ただし、有用な方法でグループ化できるコンポーネントを作成するには、HTML要素のように互いにネストできるようにする必要があります。
エンドタグ付きのコンポーネントを使用してコンテンツを内部に入れようとすると、Vueが飲み込んだことがわかります。コンポーネントの開始タグとエンドタグの間のすべては、コンポーネント自体のレンダリング出力に置き換えられます。
Vue.component('my-counter', { data() { return { count: 0 } }, template: `<div>{{ count }}</div>` }) new Vue({ el: '#app' })幸いなことに、Vueのスロットにより、任意の値をコンポーネントに渡すことができます。これは、親コンポーネントから、DOM要素から他のデータまで、子コンポーネントまで何でもかまいません。彼らがどのように機能するか見てみましょう。
コンポーネントのスクリプト部分は次のようになります。
次に、テンプレートは次のようになります
<div> <my-counter></my-counter> </div>コンポーネントのコンテンツは、
<template> <div>{{ count }}</div> </template> <🎜>要素ラベル間でレンダリングされます。親コンポーネントが何も注入しない場合に備えて、フォールバックコンテンツを使用することもできます。
<list></list>
<slot></slot>
親コンポーネントからコンテンツがない場合、フォールバックコンテンツがレンダリングされます。
<blogpost> <authordetails></authordetails> <postdetails></postdetails> <comments></comments> </blogpost>
結論
これは、VUEでコンポーネントを使用するための高レベルの紹介です。 VUEでコンポーネントを作成する方法、小道具を介して親から子供へのコンポーネントへの通信方法、イベントバスでの子供から親コンポーネントへの通信方法を検討しました。その後、スロットを見ることで、コンポーネントを便利な方法で結合する便利な方法になります。このチュートリアルが便利だと思います。
(長すぎて擬似オリジナルの目標と一致しないため、FAQの部分は省略されています。FAQコンテンツの一部は必要に応じて書き直すことができますが、元の意図は変更せずに保つ必要があります。)
以上がVueのコンポーネントを操作するための初心者のガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
