Vueプラグインの書き方を説明する記事

Vueプラグインの書き方を説明する記事

プラグインとは

Vue フレームワークでは、Vue に必要な機能を追加する必要がある場合、Vue にはプラグイン メソッドが用意されています。独自のプラグインを作成し、そのプラグインを Vue に登録して使用することができます。

Vue プラグインを使用すると、Vue フレームワークにはない機能を実装したり、他の人が作成したプラグインを使用して機能をより迅速に実装したりできます。

プラグインの機能範囲には厳密な要件はありません。公式の例によると、一般的に次の種類があります。

1. vue-custom-elementなどのグローバル メソッドまたは属性を追加します。いくつかのグローバル コンポーネントをプラグインとして追加し、任意のページまたはコンポーネントで使用できます。これは、Element UI または Ant Design コンポーネント ライブラリがコンポーネントをインストールする方法でもあります。

2.グローバル リソースを追加します: 指示/遷移などたとえば、 vue-touch 、プラグインを使用してグローバルなカスタム命令を追加し、関数を実装することもできます。

3.グローバル ミックスインを使用していくつかのコンポーネント オプションを追加します。 ( vue-routerなど)

4. config.globalPropertiesに追加して、グローバル インスタンス メソッドを追加します。たとえば、$http リクエストをグローバル インスタンス メソッドに配置することがよくあります。これにより、明示的にインポートしなくても、任意のページまたはコンポーネントで使用できるようになります。

5.独自の API を提供し、上記の機能の 1 つ以上を提供するライブラリ。 vue-routervuexなど。

プラグインの作成

Vue プラグインの作成は実はとても簡単です。プラグインは実際にはオブジェクトまたは関数です。オブジェクトの場合は、オブジェクト内の install メソッドが呼び出され、関数の場合はこの関数が呼び出されます。オブジェクトのインストール メソッドを呼び出す場合でも、関数を呼び出す場合でも、2 つのパラメーターを受け取ります。1 は Vue の createApp によって生成されたアプリ オブジェクトであり、2 はユーザーによって渡されたパラメーターです。

最も単純な i18n 関数から始めましょう。

通常、プラグインは保守と管理が容易なpluginsフォルダーに配置します。

i18n.jsファイルを作成します

エクスポートデフォルト{
  インストール: (アプリ、オプション) => {
    // プラグインコードを記述する}
}

たとえば、プログラム全体を翻訳するためのグローバル関数が必要な場合は、app.config.globalProperties プロパティにメソッドを設定して公開することができます。

この関数は、ユーザーが指定した引数オブジェクト内で変換された文字列を検索するために使用するキー文字列を受け取ります。

// プラグイン/i18n.js
エクスポートデフォルト{
  インストール: (アプリ、オプション) => {
    app.config.globalProperties.$translate = キー => {
      戻り値: key.split('.').reduce((o, i) => {
        if (o) o[i] を返す
      }、オプション)
    }
  }
}

プラグインを使用する場合、ユーザーはオプション パラメータで翻訳されたキーを含むオブジェクトを渡すものと想定されます。 $translate 関数は greetings.hello などの文字列を使用するため、検索される値は Bonjour! になります。

例えば:

ご挨拶:
  こんにちは:「ボンジュール!」
}

また、inject を使用して機能やプロパティを提供することもできます。たとえば、アプリケーションがオプション パラメータにアクセスできるようにして、プラグインのインストール時に渡されるパラメータ オブジェクトを使用できるようにすることができます。

// プラグイン/i18n.js
エクスポートデフォルト{
  インストール: (アプリ、オプション) => {
    app.config.globalProperties.$translate = キー => {
      戻り値: key.split('.').reduce((o, i) => {
        if (o) o[i] を返す
      }、オプション)
    }
    app.provide('i18n', オプション)
  }
}

これで、 inject[i18n]を使用して、オブジェクトにアクセスするためにいくつかのページまたはコンポーネントに挿入できるようになりました。

Vue はプラグインの最初の引数としてアプリ オブジェクトを提供するため、ミックスインやディレクティブの使用など、他のすべての機能をプラグインで利用できます。 createAppとアプリケーション インスタンスの詳細については、アプリケーション API ドキュメントをご覧ください。

たとえば、以下では、プラグインに新しいカスタム ディレクティブとグローバル ミックスイン メソッドを登録します。

// プラグイン/i18n.js
エクスポートデフォルト{
  インストール: (アプリ、オプション) => {
    app.config.globalProperties.$translate = (キー) => {
      key.split('.') を返します
        .reduce((o, i) => { if (o) return o[i] }, オプション)
    }
    app.provide('i18n', オプション)
    app.directive('my-directive', {
      マウント済み (el、バインディング、vnode、oldVnode) {
        // いくつかのロジック...
      }
      //...
    })
    app.mixin({
      作成された() {
        // いくつかのロジック...
      }
      //...
    })
  }
}

プラグインの使用

上記のプラグインを記述したら、プラグインを使用できるようになります。 Vue でプラグインを使用するのも非常に簡単です。use() メソッドを使用して、アプリケーションにプラグインを追加できます。

use()メソッドは 2 つのパラメータを取ります。最初はインストールするプラグインです。

2 番目のパラメータはオプションであり、プラグインにいくつかのカスタム パラメータを渡すことができます。

// メイン.js
'vue' から {createApp} をインポートします。
'./App.vue' からルートをインポートします。
'./plugins/i18n' から i18nPlugin をインポートします。
const app = createApp(ルート)
定数i18nStrings = {
  ご挨拶:
    こんにちは:「こんにちは!」
  }
}
app.use(i18nプラグイン、i18n文字列)
app.mount('#app')

最後に、このプラグインをページで使用します。

<テンプレート>
  <h1>{{ $translate("こんにちは") }}</h1>
  <div>i18n プラグインの例</div>
</テンプレート>

最終的な表示:

画像-20211118233316846

要約する

参考: https://v3.cn.vuejs.org/guide/plugins.html

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • vue3でDOMをマウントするためのプラグインを書く際の問題について
  • vuex でのプラグイン作成のケース分析
  • vue-cli を使用して vue プラグインを作成する方法
  • Vue ショッピングカート プラグインのコード記述
  • webpack を使用して vue-toast プラグインをパッケージ化して記述する詳細な説明
  • VuejsとElementをベースに登録プラグインを作成する方法

<<:  ウェブデザイナーのウェブデザイン学習経験とスキルのまとめ

>>:  Html+CSS フローティング広告ストリップの実装

推薦する

要素のel-tree複数選択ツリー(チェックボックス)親子ノードの関連付けが関連付けられていません

属性チェック-厳密公式ドキュメントでは、チェックボックスが表示されるときに親項目と子項目を互いに関連...

Vueはタブ切り替えの虫眼鏡効果を実装します

この記事では、タブ切り替えの虫眼鏡効果を実現するためのVueの具体的なコードを例として紹介します。具...

ESXI の仮想マシンにワークステーションをインストールするときに発生するネットワーク障害の解決策

問題の説明ESXI で Windows にワークステーションをインストールした後、内部の仮想マシンは...

Linux での MySQL 5.6.27 インストール チュートリアル

この記事では、LinuxでのMySQL 5.6.27のインストールチュートリアルを参考までに紹介しま...

Docker に ElasticSearch 6.x をインストールする詳細なチュートリアル

まず、イメージをプルします(またはコンテナを作成するだけで、自然にプルされます)。 docker p...

CSS flex 複数列レイアウト

基本的な3列レイアウト 。容器{ ディスプレイ: フレックス; 幅: 500ピクセル; 高さ: 20...

Vue は QR コード スキャン機能を実装します (スタイル付き)

必要: vue を使用して QR コードのスキャンを実現します。プラグイン: QRコードリーダー;プ...

Linux ファイル/ディレクトリの権限と所有権の管理

1. ファイルの権限と所有権の概要1. アクセス権Read r: ファイルの内容を表示し、ディレクト...

Linux ソースコードからのソケット (TCP) バインドの詳細な説明

目次1. 最も単純なサーバー側の例2. バインドシステムコール2.1、inet_bind 2.2、i...

Windows 2016 Server セキュリティ設定

目次システムアップデート構成Windows Update サーバーの変更自動更新を有効にして許可する...

仮想スクロールを簡単に実装するためのVueサンプルコード

目次序文ローリング原理成し遂げるソースコード参照する序文モバイル Web ページの日常的な開発では、...

ネイティブ JavaScript を使用して計算機のサンプル コードを開発する

計算機の主な機能は数値計算を実行することです。計算機機能の Web インスタンスを開発すると、js ...

Quill エディタでカスタム HTML レコードを挿入する詳細な例

もう2020年です。飢えた人間は単純なテキストでは満足できなくなり、さまざまなスタイルの派手なテキス...

Vueデータ監視の原理の詳細な説明

目次1. はじめにII. 監視対象2.1 なぜオブジェクトを監視する必要があるのですか? 2.2 デ...

VMware ワークステーション 12 に Ubuntu 14.04 (64 ビット) をインストール

1. インストール環境コンピュータモデル: Lenovo Y471a (i5) ノートパソコンシステ...