2016-07-12 19 views
9

私はvue jsの新作で、学習するときにいくつか質問があります。vueインスタンスとvueコンポーネントの違いは?

私は今インスタンスとコンポーネントの関係についてちょっと混乱しています。私が学んだ限り、vueによって構築されるすべてのアプリケーションは、1つのインスタンスと1つのインスタンスのみを持つ必要があります。必要な場合、多くのコンポーネントを好きなだけ持つことができます。しかし、最近私はデモを見てきましたが、そのデモでは複数のインスタンスがあります。

私の質問は、1つのアプリでデモコードがうまく機能するが、正しい方法です。 vueアプリケーションでインスタンスとコンポーネントを使用するベストプラクティスは何ですか?

答えて

6

同じプロジェクトに2つのインスタンスがあるのは問題ありませんが、そうしたくないかもしれません。

単一のページアプリケーション(SPA)を作成する場合は、1つのメインインスタンスでアプリケーションを制御することをお勧めします。次に、必要なだけ多くのコンポーネントを使用します。

コンポーネントは、コードを再利用して整理しておくのに最適な方法です.Vue.jsを使用すると、コンポーネントと「メイン」Vueインスタンス間の通信が非常に簡単になります。

+0

私はVueを使用して大規模なエンタープライズアプリケーションを構築しており、1つのインスタンスしか使用していません。私はそれ以上のものを持つためにユースケースがどんなものかを確信していません...しかし、私はそれにまだ踏み込んでいません。 –

+0

@EvanButlerはい、私はどちらも持っていません。 – crabbly

+1

複数のインスタンスを使用して、既存のSPAをVueに段階的に移行しています。 – nogridbag

4

Vueインスタンスは、すでに存在する要素に関連付けられ、操作できます。

Vueコンポーネントは、新しい要素を作成してどこでも再利用するのに適しています。

5

状況に応じて非常に異なります。

私はSPAではない大きなWebプロジェクトで作業します。アプリケーションの「サイロ」ごとにVueインスタンスがあります。私たちは古いプロジェクトを主にjQueryのフロントエンドから徐々に移行していくので、進化するにつれて単一のVueインスタンスまで圧縮できますが、複数のインスタンスには問題はありません。既存のプロジェクトでのVueの使い易さは、反応などの別の図書館で選択する際の最大の決定要因の1つでした。

私は緑の開発、1つのインスタンス、多くのコンポーネントを使って異なるアプローチをとっています。

+0

「サイロ」はコンポーネントですか? – aircraft

0

VueインスタンスとVueコンポーネントの共通点と、いくつかの違いがあります。 Vue docsから

全てヴュー成分もVueのインスタンスであるので、(数ルート固有のオプションを除く)と同じオプション・オブジェクトを受け入れます。

Vueのインスタンスは、Vueのコンポーネントができない、elrouterなどのデータを受け入れます。 Vueインスタンスのdataプロパティはオブジェクトですが、Vueコンポーネントでは関数でなければなりません。

  • 設計目標が異なる:
  • Vueのインスタンスは、Vueのアプリケーションランチャーは、Vueの成分はVueのインスタンスの拡張です。

    Vueコンポーネントは要素を作成して、多くの同様の場所で使用できます。これは主にポイントを反映するコンポーネント化のVue特性です。

    関連する問題