序文: Vue を使用する場合、多くの場合、カスタム プラグインをいくつか使用して記述し、 この記事を読むと、次のことが分かります。
さて、これ以上何も言わずに、始めましょう! ! ! 1. Vuex&Vue-Routerでのインストール処理ここに、皆さんに考えてほしい 2 つの質問があります。穴を掘るようなものです。以下で 1 つずつ答えていきます。
実際、両者の原理は同じです。ここでは例として クラスルーター{ コンストラクタ(オプション) { ... } } Router.install = function(_Vue) { _Vue.mixin({ 作成前() { if (this.$options.router) { _Vue.prototype.$router = this.$options.router } } }) } デフォルトルーターをエクスポートします。
この場合は、大胆な判断をしてみましょう。 心配しないでください。最初の問題は解決したので、今度は 2 番目の穴を埋めましょう。 通常は // ルーター/index.js 'vue-router' という形式で VueRouter をインポートします。 'vue' から Vue をインポートします。 Vue.use(VueRouter); 定数_router = [ ... ] 定数 Router = new VueRouter(_router); デフォルトルーターをエクスポートします。 // メイン.js 'vue' から Vue をインポートします。 'router' から router をインポートします。 新しいVue({ ルーター、 ... }).$mount('#app'); 最初の例を組み合わせて、まず分析してみましょう。
噛む! ! !要素が検出されましたので、大胆に推測してみましょう。 2. Vueでのインストールの内部実装よく使われるライブラリ エクスポート関数 initUse (Vue: GlobalAPI) { // インスタンスにマウントされたuseメソッドを登録する Vue.use = function (plugin: Function | Object) { // 現在のプラグインの配列を初期化します const installedPlugins = (this._installedPlugins || (this._installedPlugins = [])) // このプラグインがすでに登録されている場合は処理しません if (installedPlugins.indexOf(plugin) > -1) { これを返す } ... // ここがポイントです! ! ! if (typeof plugin.install === 'function') { // install がプラグイン内の関数である場合、install メソッドを呼び出し、プラグインを指定して、いくつかのパラメータを plugin.install.apply(plugin, args) に渡します。 } そうでない場合 (typeof plugin === 'function') { // プラグイン自体が関数である場合は、それをインストールメソッドとして扱い、プラグインを指し示し、一連のパラメータを plugin.apply(null, args) に渡します。 } //プラグインをプラグイン配列に入れるinstalledPlugins.push(plugin) これを返す } } ソースコードのこの部分は非常に簡潔で、読みやすいです。つまり、使用時にプラグインの種類を判別し、プラグイン自体の 結論: Vue のプラグインの仕組みについて、より深く理解できたでしょうか?実際、プラグインを開発するときに、 Vue のプラグインの仕組みと 以下もご興味があるかもしれません:
|
<<: IDEA で mysql8.0.3 と mybatis-generator を使用する際に発生するバグ
>>: MySQL ストアド プロシージャ (in、out、inout) の詳細な説明
目次ポータルエラー境界処理エラー境界を使用しない場合はどうなりますか?注記ポータルスロットとも言えま...
最近、ウェブサイトを更新すると、503 Service Temporarily Unavailabl...
目次1 システムスループットの簡単な紹介2 試験方法2.1 クライアントテストツール2.1.1 GE...
今日は、MySQL をインストールしたかったので、公式 Web サイトにアクセスして、MySQL の...
目次1. JavaScriptの基礎2. 基本的なJavaScript構文3. JavaScript...
1. インストールバージョンの詳細 サーバー: MariaDB サーバーバージョン: 5.5.60-...
目次序文1. イントラネットDNS AレコードとMXレコードを構成する2. メールサーバの初期化設定...
この記事の主な内容は次のとおりです。 1. 閉じるボタン2.キャレット3. フローティングを素早く設...
問題の説明 (以下の説明は Windows 環境に限定されます): D:\develop\ide\m...
mptemp は安全な方法で一時ファイルまたはディレクトリを作成します。このコマンドの適用範囲: R...
最近、Rails 経由で「utf8」でエンコードされた UTF-8 文字列を MariaDB に保存...
この記事の例では、ショッピングカート機能を実装するためのvuexの具体的なコードを参考までに共有して...
一部のWebサイトでアップロードする場合、「参照」ボタンをクリックすると、[ファイルの選択]ダイアロ...
1. ElasticSearch とは何ですか? Elasticsearch も Java で開発さ...
XHTML CSS ページ制作中に遭遇する問題の解決策は、解決策と呼ぶには少々大げさです。せいぜい、...