序文他の人のコンポーネントを Vue で使用する場合、多くの人が Vue.use() を使用すると思います。例: Vue.use(VueRouter)、Vue.use(MintUI)。しかし、axios を使用する場合は、Vue.use(axios) を使用する必要はなく、直接使用できます。それで、なぜでしょうか? 1. 例で理解する新しいプロジェクトに plugins.js と use.js の 2 つのファイルを作成します。 // プラグイン.js 定数プラグイン1 = { インストール(a,b){ console.log('Plugin1 の最初のパラメータ:',a) console.log('プラグイン1の2番目のパラメータ:',b) } } 関数Plugin2(a,b){ console.log('Plugin2 の最初のパラメータ:',a) console.log('プラグイン2の2番目のパラメータ:',b) } エクスポート{プラグイン1,プラグイン2} // 使用.js 'vue' から Vue をインポートします './plugins' から {Plugin1,Plugin2} をインポートします。 Vue.use(プラグイン1、'パラメータ1') Vue.use(プラグイン2、'パラメータA') // メイン.js 'vue' から Vue をインポートします './App.vue' からアプリをインポートします。 './router' からルーターをインポートします './assets/plugins/use' をインポートします Vue.config.productionTip = false 新しいVue({ ルーター、 店、 レンダリング: h => h(App) }).$mount('#app') このことから、plugin1 の install メソッドに記述した 2 つのコンソールが出力されていることがわかります。最初のコンソールは Vue オブジェクトを出力し、2 番目のコンソールは渡したパラメーターです。 Plugin2 には install メソッドがありません。それ自体がメソッドであり、2 つのパラメータを出力することもできます。1 つ目は Vue オブジェクトで、2 つ目は渡したパラメータです。 2. ソースコードを分析するtoArray ソースコード エクスポート関数 toArray (リスト: 任意、開始?: 数値): Array<任意> { 開始 = 開始 || 0 i = list.length - 開始とする const ret: Array<any> = 新しいArray(i) (i--) { ret[i] = リスト[i + 開始] } リターン ret } '../util/index' から { toArray } をインポートします エクスポート関数 initUse (Vue: GlobalAPI) { Vue.use = function (プラグイン: Function | Object) { const インストール済みプラグイン = (this._installedPlugins || (this._installedPlugins = [])) インストールされたプラグインのインデックスが -1 より大きい場合 これを返す } // 追加パラメータ const args = toArray(引数、1) args.unshift(これ) if (typeof plugin.install === 'function') { plugin.install.apply(プラグイン、引数) } そうでない場合 (typeof plugin === 'function') { プラグインを適用(null, 引数) } インストールされたプラグインをプッシュします これを返す } } ソースコードから、Vue はまずプラグインが登録されているかどうかを判断し、繰り返しの登録を許可せず、受信したプラグインパラメータは Function | Object タイプに制限されていることがわかります。 これら 2 つのタイプには異なる治療法があります。 まず、渡したパラメータを配列に整理します: 次に、配列 渡すプラグインのインストール (Vue.use の最初のパラメータ) がメソッドである場合。つまり、インストール メソッドを含むオブジェクトを渡す場合は、このプラグインのインストール メソッドを呼び出し、ソートされた配列をインストール メソッドのパラメーターとして渡します 渡すプラグインが関数である場合は、関数を直接呼び出し、ソートされた配列をパラメーターとして渡します (plugin.apply(null, args);)。 次に、このプラグインを追加されたプラグインの配列に追加し、登録されたことを示します 3. まとめ上記の分析を通じて、将来プラグインを作成する方法は 2 つあることがわかります。 1 つは、このプラグインのロジックをオブジェクトにカプセル化し、最後にインストール時にビジネス コードを記述して、それを Vue オブジェクトに公開することです。これを実行する利点は、このオブジェクトに任意のパラメータを追加して、インストール機能をより簡潔かつ拡張可能にできることです。 もう 1 つの方法は、すべてのロジックを関数に記述し、それを Vue に公開することです。 実際、2 つの方法の原理は同じですが、2 番目の方法ではプラグインがインストール関数として直接扱われる点が異なります。 個人的には、最初の方法の方が合理的だと思います。 エクスポートconstプラグイン = { インストール(Vue) { Vue.コンポーネント... Vue.mixins... ヴュー... // インストール時に他の関数を実行することもできます。Vue はこれをプラグインにポイントします。console.log(this) // {install: ...,utils: ...} this.utils(Vue) // utils関数を実行 console.log(this.COUNT) // 0 }, ユーティリティ(Vue) { ヴュー... コンソールログ(Vue) // Vue }, カウント: 0 } // このオブジェクトにパラメータを追加することができ、Vue はインストール メソッドのみを実行し、他のメソッドはインストール メソッドをカプセル化するための補助関数として使用できます。const test = 'test' エクスポート関数Plugin2(Vue) { ヴュー... console.log(テスト) // 'テスト' // プラグインが関数として記述されている場合、Vue は this を null にのみポイントし、この関数にはポイントしないことに注意してください console.log(this) // null } // この方法では、プラグインのロジックを1つの関数にしか記述できず、カプセル化はそれほど強力ではありません 要約するこれで、Vue における Vue.use() の原理と基本的な使用法に関するこの記事は終了です。Vue の Vue.use() の原理と使用法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 8.0.22 のダウンロード、インストール、設定方法のグラフィックチュートリアル
>>: Postman に基づく HTTP インターフェース テスト プロセスの分析
このブログ投稿は、ブロガーが数日前に取り組んだプロジェクトで遭遇した困難についてです。これを学んだ後...
最近、ブログのアップグレードを始めました。テンプレートを変更する過程で、CSS スタイルシートを書き...
RedHat6.5インストールMySQL5.7チュートリアル共有、参考までに、具体的な内容は次のとお...
目次1. はじめに2. データベースをバックアップする3. オリジナルのMysqlをアンインストール...
MySQLバイナリのインストール方法mysqlをダウンロード参考: 1. パッケージを解凍する ta...
目次序文環境の準備カテゴリコンポーネントアプリのコンポーネント1. デフォルトスロット2. 名前付き...
純粋なCSS3で蝶が羽ばたく様子を再現。まずはその効果をご覧ください どうですか?効果はかなりいいで...
SSH 公開鍵認証は、SSH 認証方式の 1 つです。 SSH パスワードフリーのログインは公開鍵認...
目次序文1. SCPの使用法2. sftpを使用する3. scp と sftp の違いは何ですか?ど...
mysql countの詳細な説明count関数はテーブルや配列内のレコードを数えるために使われます...
目次更新可能なビュービューのパフォーマンスビューの制限ビューは MySQL 5.0 以降で導入されま...
最近、仕事の都合で、MySQL で数字をフォーマットする必要がありましたが、インターネット上にはほと...
1. クリアフローティング法1前の親要素の高さを設定します。注: エンタープライズ開発では、可能であ...
7 のMicrosoft の公式 Web サイトから HTTP Rewrite モジュールをダウンロ...
MACはmysql8.0をインストールします。具体的な内容は次のとおりです。 1. ダウンロードアド...