Vue のプラグインとコンポーネントの違いと使い方のまとめ

Vue のプラグインとコンポーネントの違いと使い方のまとめ

このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DELL G3 コンピュータ。

1. コンポーネントとは何ですか?

コンポーネントの以前の定義を思い出してください。

コンポーネントとは、さまざまなグラフィックおよび非グラフィックのロジックを統一された概念 (コンポーネント) に抽象化する開発モデルです。Vue では、各 .vue ファイルをコンポーネントと見なすことができます。

コンポーネントの利点

  • システム全体の結合を減らします。インターフェースを変更せずに、さまざまなコンポーネントを置き換えて、要件を迅速に満たすことができます。たとえば、入力ボックスは、特定の実装に合わせてカレンダー、時間、範囲などのコンポーネントに置き換えることができます。
  • デバッグが簡単。システム全体がコンポーネントで構成されているため、問題が発生した場合、消去法を使用してコンポーネントを直接削除するか、エラーを報告したコンポーネントに基づいて問題をすばやく特定できます。すぐに特定できる理由は、各コンポーネントが疎結合で単一の責任を持っているため、システム全体を分析するよりもロジックが単純になるためです。
  • 保守性の向上。各コンポーネントは単一の責任を持ち、システム内でコンポーネントが再利用されるため、コードを最適化するとシステム全体のアップグレードを実現できます。

2. プラグインとは何ですか?

プラグインは、Vue にグローバル機能を追加するためによく使用されます。プラグインの機能の範囲には厳密な制限はありません。一般的に、プラグインは次のカテゴリに分類されます。

  • グローバル メソッドまたはプロパティを追加します。例えば: vue-custom-element
  • グローバル リソースを追加します: ディレクティブ/フィルター/トランジションなど。 vue-touchなど
  • グローバル ミックスインを介していくつかのコンポーネント オプションを追加します。 vue-routerなど
  • Vue インスタンス メソッドを Vue.prototype に追加して追加します。
  • 独自の API を提供し、上記の機能の 1 つ以上を提供するライブラリ。 vue-routerなど

3. 両者の違い

両者の違いは主に以下の点に反映されています。

  • 文章の形式
  • 登録フォーム
  • 使用シナリオ

文章の形式

コンポーネントの記述

コンポーネントを記述する方法は多数あります。最も一般的な方法は、vue 単一ファイル形式です。各 .vue ファイルはコンポーネントとみなすことができます。

vueファイルの標準フォーマット

<テンプレート>
</テンプレート>
<スクリプト>
エクスポートデフォルト{ 
    ...
}
</スクリプト>
<スタイル>
</スタイル>

テンプレート属性を通じてコン​​ポーネントを書き込むこともできます。コンポーネントのコンテンツが大きい場合は、テンプレート コンポーネントのコンテンツを外部で定義できます。コンポーネントのコンテンツが大きくない場合は、テンプレート属性に直接書き込むことができます。

<template id="testComponent"> // コンポーネント表示コンテンツ <div>component!</div>   
</テンプレート>
 
Vue.component('componentA',{ 
    テンプレート: '#testComponent'  
    template: `<div>component</div>` // この形式は、コンテンツの少ないコンポーネントに使用できます})

プラグインの作成

Vue プラグインの実装では、インストール メソッドを公開する必要があります。このメソッドの最初のパラメーターは Vue コンストラクターであり、2 番目のパラメーターはオプションのオプション オブジェクトです。

MyPlugin.install = 関数 (Vue、オプション) {
  // 1\. グローバルメソッドまたはプロパティを追加する
  Vue.myGlobalMethod = 関数(){
    // ロジック...
  }
 
  // 2\. グローバルリソースを追加する Vue.directive('my-directive', {
    バインド (el、バインディング、vnode、oldVnode) {
      // ロジック...
    }
    ...
  })
 
  // 3\. コンポーネントオプションを挿入する Vue.mixin({
    作成: 関数 () {
      // ロジック...
    }
    ...
  })
 
  // 4\. インスタンスメソッドを追加する Vue.prototype.$myMethod = function (methodOptions) {
    // ロジック...
  }
}

登録フォーム

コンポーネント登録

Vueコンポーネントの登録は主にグローバル登録とローカル登録に分かれています

グローバル登録は Vue.component メソッドを通じて行われます。最初のパラメーターはコンポーネントの名前で、2 番目のパラメーターは渡された構成項目です。

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

ローカル登録では、コンポーネントが使用されるコンポーネント プロパティを通じてコン​​ポーネントを登録するだけです。

const component1 = {...} // コンポーネントを定義する export default {
    コンポーネント:{
        コンポーネント1 // ローカル登録}}

プラグイン登録

プラグインは Vue.use() を介して登録 (インストール) されます。最初のパラメータはプラグインの名前で、2 番目のパラメータはオプションの構成項目です。

Vue.use(プラグイン名,{ /* ... */ )

ご了承ください:

プラグインを登録する場合は、new Vue() を呼び出してアプリケーションを起動する前に登録する必要があります。

Vue.useは、同じプラグインの複数の登録を自動的に防止し、一度だけ登録します。

使用シナリオ

詳細はプラグインとは何かのセクションで説明しているので、ここでまとめておきます。

コンポーネントは、アプリのビジネスモジュールを形成するために使用されます。そのターゲットはApp.vueです。

プラグインは、テクノロジースタックを強化するために使用される機能モジュールです。そのターゲットは Vue 自体です。

簡単に言えば、プラグインは Vue の機能を強化または補足するものです。

以上で、Vue のプラグインとコンポーネントの違いと使い方のまとめの記事は終了です。Vue のプラグインとコンポーネントの違いについてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue-cropperプラグインは、画像キャプチャとアップロードコンポーネントのカプセル化を実現します。
  • Vueはスロットルまたはデバウンスをコンポーネントまたはプラグインとして実装します
  • Vue は zTree プラグインを使用してツリーコンポーネント操作の例をカプセル化します。
  • Vue のカスタム ページング プラグイン コンポーネントの例
  • Vue2x をベースにしたレスポンシブ アダプティブ カルーセル コンポーネント プラグイン VueSliderShow 関数の実装
  • Vue カスタム グローバル コンポーネント (カスタム プラグイン) の使用
  • ブートストラップ選択プラグインはVue2.0コンポーネントとしてカプセル化されています

<<:  CSS3 のフレックスレイアウト幅の無効性の解決策

>>:  MySQLからElasticsearchにデータを同期する方法の詳細な説明

推薦する

MySQLデータベースの数千万件のデータクエリとストレージの詳細な説明

目次百万レベルのデータ処理ソリューションデータストレージ構造設計クエリステートメントの最適化1000...

Vueはページの部分的なリフレッシュを実装します(ルータビューのページリフレッシュ)

Vue でprovide+inject組み合わせを使用するまず、App.vue を変更する必要があ...

Mysql データベースの日付と日時型でデフォルト値 0000-00-00 を設定するときに発生するエラー問題の詳細な説明

現象: MySQL バージョン 5.7 以降では、日付型と日付時刻型のデフォルト値が「0000-00...

Centos7.4 環境に lamp-php7.0 をインストールするチュートリアル

この記事では、Centos7.4 環境に lamp-php7.0 をインストールする方法について説明...

あるテーブルからバッチデータをクエリし、それを別のテーブルに挿入する MySQL の完全な例

事前に言っておくNodejs はデータベースを非同期操作として読み取るため、データベースがデータを読...

JavaScript のデシェイクとスロットリングの例

目次安定スロットル: 手ぶれ防止: 一定時間内に最後のタスクのみを実行します。スロットル: 一定期間...

docker を使用してコード サーバーをデプロイする方法

画像をプルする # docker pull codercom/code-server # Docke...

MySQL 関数インデックス最適化ソリューション

MySQL を使用する場合、多くの開発者は一部の列に対して関数計算を実行することが多く、その結果、イ...

Linux デバイスに空き容量がありません inode の満杯により 500 エラーが発生します

iノードとは何ですか? inode を理解するには、まずファイル ストレージから始める必要があります...

CSSで半透明の背景色を実現する2つの方法について簡単に説明します。

ページをレイアウトする際、ユーザーに異なる視覚効果を与えるために、div の背景色を半透明の状態に設...

div タグ内の要素の margin-top が無効である場合の解決策

タイトル通りです。その質問は非常に奇妙です。要素の親タグはdivで、幅や高さなどの属性は設定されてい...

Vue の foreach 配列と js の traversal 配列の書き方の説明

Vue foreach配列を記述し、jsで配列をトラバースする方法シナリオVueでAxiosを使用し...

MySQL インデックスの左端原則のサンプルコード

序文最近、MySQL のインデックスについて読んでいました。結合されたインデックスを見ると、左端の原...

CentOS 7.6 仮想ネットワーク カードのバッチ追加、変更、削除操作の紹介

1 カーネルにtunモジュールがあるかどうかを確認する modinfo tun modprobe t...

スライダーを作成するためのネイティブ js ドラッグ アンド ドロップ機能のサンプル コード

ドラッグ アンド ドロップはフロントエンドでよく使われる機能であり、多くのエフェクトで js のドラ...