ホームページ ウェブフロントエンド Vue.js Vue.useのソースコードを解析する

Vue.useのソースコードを解析する

Oct 29, 2020 pm 05:55 PM
vue.js

Vue.useのソースコードを解析する

vue 開発の経験がある人は、vue.use に慣れているわけではありません。 vue-resource や vue-router などのグローバル コンポーネントを使用する場合、それらが機能するには Vue.use メソッドを通じて導入する必要があります。では、コンポーネントが導入される前に vue.use は正確に何を行うのでしょうか?

最初に vue.use のソース コードに移動します

Vue.use = function (plugin) {
    /* istanbul ignore if */
    if (plugin.installed) {
      return
    }
    // additional parameters
    var args = toArray(arguments, 1);
    args.unshift(this);
    if (typeof plugin.install === 'function') {
      plugin.install.apply(plugin, args);
    } else if (typeof plugin === 'function') {
      plugin.apply(null, args);
    }
    plugin.installed = true;
    return this
  };
ログイン後にコピー

Vue.use を通じてプラグインを導入するとします (プラグインは一時的に変数またはパラメーターとして理解できます)。つまり、Vue.use(plugin);

最初に、受信パラメータ プラグインにインストールされている属性が存在するかどうかを確認します。存在し、論理値が true の場合は、直接戻り、後続のコードは実行されません. この判決の役割は何ですか?それについては後で話します。

まず、インストールされているプラ​​グイン属性が存在しないか false であると仮定し、実行を続行します。

var args = toArray(arguments, 1)
ログイン後にコピー

toArray メソッドが実行され、toArray は 2 つのパラメータを受け取り、引数は Vue です。 Vue.use(a,b,c) などの .use メソッドによって渡されるパラメータのセットの場合、引数は [a,b,c] に似ています (注: 引数は単なる配列のようなものであり、実際の配列ではありません) )

ここではパラメータ プラグインを 1 つだけ紹介するため、引数は [plugin] と同様です。

toArray の機能は何ですか?ソースコードを見てください。

function toArray (list, start) {
  start = start || 0;
  var i = list.length - start;
  var ret = new Array(i);
  while (i--) {
    ret[i] = list[i + start];
  }
  return ret
}
ログイン後にコピー

toArray(arguments,1) を実行すると、長さ = argument.length-1 の新しい配列 ret が生成され、次に while ループが実行されて引数の要素が ret に逆に割り当てられます。 ret が引数よりも長いため、order は 1.

したがって、これは最終的には、最初の要素を除く残りの要素を ret に割り当てることと等価です。 toArray の主な機能は、配列メソッドを呼び出せるようにクラス配列を実数配列に変換することです。

ここではプラグイン パラメーターを 1 つだけ紹介しているため、arguments=[plugin] なので、toArray は空の配列 [] を返します。

次に args.unshift(this) を実行します。これは [].unshift(Vue) と同等、つまり args = [Vue];

次に

if (typeof plugin.install === 'function') {
      plugin.install.apply(plugin, args);
    } else if (typeof plugin === 'function') {
      plugin.apply(null, args);
    }
ログイン後にコピー
# を実行します。 ## ここで、プラグインのインストールが関数であるかどうかを判定します。関数である場合は、すぐに plugign.install メソッドが実行されます。install メソッドで渡されるパラメータは、args の配列要素、つまり最初のインストールで受け入れられるパラメータは Vue.

プラグインのインストールが関数ではない場合、プラグイン自体が関数であるかどうかを確認します。関数である場合は、プラグイン関数を実行します。パラメータは配列要素です引数で。

最後に、plugin.installed を true に設定します。 plugin.installed を true に設定するのは、同じプラグインが複数回インストールされるのを防ぐためです。たとえば、Vue.use (プラグイン) を一度実行すると、installed が true になり、再度実行すると戻ります。判断の第一歩へ。

要約すると、Vue.use の機能は、実際にはプラグイン関数を実行するか、プラグインの install メソッドを実行してプラグインを登録し、Vue オブジェクトを最初のパラメーターとしてプラグインまたはそのインストールに渡すことです。メソッド、使用 他のパラメータは、プラグインまたはインストールの他のパラメータとして使用されます。

簡単な例を挙げてください

import Vue from 'vue'
function test(a){
   console.log(a);//Vue
}
function test1(a,b){
  console.log(a,b);//Vue hello
}
let oTest = {
   install:function(a,b){
      console.log(a,b);//Vue hello1
   }
}
Vue.use(test);
Vue.use(test1,'hello');
Vue.use(oTest,'hello1')
console.log(oTest);
//{
  install:function(){...},
  installed:true
}
ログイン後にコピー
関連する推奨事項:


2020 フロントエンド Vue インタビューの質問の概要 (回答付き)

vue チュートリアルの推奨事項: 2020 年の最新の vue.js ビデオ チュートリアル 5 選

プログラミング関連の知識について詳しくは、こちらをご覧ください:

プログラミング入門! !

以上がVue.useのソースコードを解析するの詳細内容です。詳細については、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)

vite が .env ファイルを解析する方法についての詳細な説明 vite が .env ファイルを解析する方法についての詳細な説明 Jan 24, 2023 am 05:30 AM

Vue フレームワークを使用してフロントエンド プロジェクトを開発する場合、デプロイ時に複数の環境をデプロイすることになりますが、開発環境、テスト環境、オンライン環境で呼び出されるインターフェイス ドメイン名が異なることがよくあります。どうすれば区別できるでしょうか?それは環境変数とパターンを使用することです。

vue のコンポーネント化とモジュール化の違いは何ですか vue のコンポーネント化とモジュール化の違いは何ですか Dec 15, 2022 pm 12:54 PM

コンポーネント化とモジュール化の違い: モジュール化はコード ロジックの観点から分割され、コードの階層化された開発が容易になり、各機能モジュールの機能の一貫性が保証されます。コンポーネント化は UI インターフェイスの観点から計画され、フロントエンドのコンポーネント化により UI コンポーネントの再利用が容易になります。

実践的な戦闘: vue ファイルをサポートして定義にジャンプするプラグインを vscode で開発する 実践的な戦闘: vue ファイルをサポートして定義にジャンプするプラグインを vscode で開発する Nov 16, 2022 pm 08:43 PM

vscode 自体は、定義にジャンプするための Vue ファイル コンポーネントをサポートしていますが、そのサポートは非​​常に弱いです。 vue-cli の構成では、多くの柔軟な使用法を記述することができるため、制作効率が向上します。しかし、これらの柔軟な記述方法により、vscode 自体が提供する関数がファイル定義へのジャンプをサポートできなくなります。これらの柔軟な記述方法に対応し、作業効率を向上させるために、Vue ファイルの定義へのジャンプをサポートする vscode プラグインを作成しました。

Ace コード エディターを Vue プロジェクトに統合する方法の詳細な図による説明 Ace コード エディターを Vue プロジェクトに統合する方法の詳細な図による説明 Apr 24, 2023 am 10:52 AM

Ace は、JavaScript で書かれた埋め込み可能なコード エディターです。 Sublime、Vim、TextMate などのネイティブ エディターの機能とパフォーマンスに匹敵します。あらゆる Web ページや JavaScript アプリケーションに簡単に埋め込むことができます。 Ace は Cloud9 IDE のメイン エディタとして維持されており、Mozilla Skywriter (Bespin) プロジェクトの後継です。

Vue3 で単体テストを作成する方法を調べる Vue3 で単体テストを作成する方法を調べる Apr 25, 2023 pm 07:41 PM

Vue.js は、今日のフロントエンド開発において非常に人気のあるフレームワークとなっています。 Vue.js が進化し続けるにつれて、単体テストの重要性がますます高まっています。今日は、Vue.js 3 で単体テストを作成する方法を検討し、いくつかのベスト プラクティスと一般的な問題と解決策を提供します。

vue3 の reactive() について詳しく話しましょう vue3 の reactive() について詳しく話しましょう Jan 06, 2023 pm 09:21 PM

前書き: vue3 の開発では、reactive は応答性の高いデータを実装するメソッドを提供します。これは日常の開発で頻繁に使用される API です。この記事では、著者はその内部動作メカニズムを探ります。

JSX 構文と Vue のテンプレート構文の簡単な比較 (利点と欠点の分析) JSX 構文と Vue のテンプレート構文の簡単な比較 (利点と欠点の分析) Mar 23, 2023 pm 07:53 PM

Vue.js では、開発者は、JSX 構文とテンプレート構文という 2 つの異なる構文を使用してユーザー インターフェイスを作成できます。どちらの構文にもそれぞれ長所と短所があるので、それらの違い、長所と短所について説明します。

Vue3 動的コンポーネントで例外を処理する方法の簡単な分析 Vue3 動的コンポーネントで例外を処理する方法の簡単な分析 Dec 02, 2022 pm 09:11 PM

Vue3 動的コンポーネントで例外を処理するにはどうすればよいですか?次の記事では、Vue3 の動的コンポーネントの例外処理方法について説明します。

See all articles