2017-08-25 6 views
1

私はルートVue 2のインスタンスを自分のアプリケーションのすべてのページにマウントしているので、私のアプリケーションの2ページだけにアクセスするメソッドを追加する必要があります。私はルートVueのインスタンスにこれらのメソッドを追加することができますが、私は、それらのメソッドは、アプリケーション内の他のすべてのページから利用可能になると私はしたくない依存関係があるので、すべてのページにインポートします。ルートビューのインスタンスを拡張する

// page1.js 

Vue.prototype.method1 = function(){...} 

しかし、私は、これらの方法Iにアクセスする必要がある2ページ目:私は、私はこれらのメソッドを必要とするページにロードする別のJSファイルにグローバルVueのプロトタイプを拡張することについて考え

// app.js 

//## Root Vue Instance 
window.App = new Vue({ 
    el: '#app', 
    methods: { 
    ... 
    } 
}) 

自分自身を繰り返す必要があります。

// page2.js 

Vue.prototype.method1 = function(){...} 

これについては、どのような方法が推奨されますか?たぶん、Vueミックスインまたはプラグインのユースケースがあります。

答えて

1

あなたが選びだしコンポーネントやインスタンスを拡張するためにミックスインを使用することができますドキュメントhttps://vuejs.org/v2/guide/mixins.html#

をご覧ください。また、1つの行ですべてのコンポーネントとインスタンスのmixinグローバルを宣言することもできます。ミックスインは、本当にそれらを拡張するので、インスタンスが行うことができるすべてを行うことができます。

+0

ミックスインをルートインスタンスに追加する必要がありますが、これを行うことで、私が避けようとしているすべてのページにそのようなコードをロードするのと同じ効果が得られます。 – enriqg9

+0

@ enriqg9 2つのページに排他的なコードでmixinをインポートするか、ランタイムにmixinをロードするかどうか(if ... else)と[動的にインポートする](https://webpack.js .org/guides/code-splitting /#dynamic-imports) –

+0

@ riyaz-aliが正しいです。 mixin: '[yourMixin ']'をそれぞれの 'data'や' methods'、componentや.vueファイルのように設定することで、mixinを1つ以上のインスタンスにインポートすることができます。この場合、すべてのページにあるわけではありません。 Vue.mixin( 'yourMixinName'、yourMixin);でmixinをglobalyに追加すると、コードはすべてのページとコンポーネントにありますが、これはあなたが望むものではありません。 – Reiner

関連する問題