2017-06-18 10 views
1

私はangularjs(1.x)とVueの新機能を使用しました。角度がDIであり、コントローラ内のサービスを参照したり、テンプレート内の指令を簡単に使用することができます。 Angularは自動的に注入するのに役立ちます。Vueは依存性注入(DI)によってコンポーネントを角度のようにインポートできますか?

しかし、私はVueのは、私は(頻繁に)リファクタリング時に、コンポーネントが失われます部品direcotry構造を変更in.Ifコンポーネントを参照してください、と私はパスを修正する必要がありimport(ES6)パスでコンポーネントを参照してください実現一つずつ。それはいかに面倒です。

角度DIのようなvue-injectorがあることは知っていますが、使いやすいのですか?

+0

[動的コンポーネント](https://vuejs.org/v2/guide/components.html#Dynamic-Components) –

+0

を使用することができます。2.2.0から[提供/挿入](https ://vuejs.org/v2/api/#provide-inject)構文ですが、高度な使用にのみ推奨されます。 – Bert

答えて

1

Vueは正式な依存性注入メカニズムを提供しません。依存関係をどのようにインポートするかはあなた次第です。

ほとんどのVueコードサンプルは依存性注入を全く使用せず、importexportでES6モジュールシステムを使用します。

リファクタリング時(頻繁に)コンポーネントのディレクトリ構造を変更すると、コンポーネント参照が失われ、パスを1つずつ修正する必要があります。それはいかに面倒です。

ディレクトリ構造を頻繁に変更しないでください。 Vueプロジェクトを正しく構成する方法の例については、Vue webpack templateを参照してください。

これは実際にあなたの質問に答えるものではありません。あなたはwebpack(または類似のもの)を使用していますか? webpackがコンフィグレーションプロパティーresolveを介してモジュールをどのように配置するかを正確に設定することができ、相対的なインポートパスを使用する必要はありません。

別の方法はregister each Vue component globallyです。インポートする必要はありません。

もう1つの方法は、各Vueコンポーネントを(どこにいても)インポートし、その1つのモジュールからすべてエクスポートするモジュールを作成することによってES6モジュールを悪用することです。今度は、インポートしたいそれぞれのモジュールの特定の場所を探し出す代わりに、その中央モジュールからインポートするだけです。

// components.js 

import Button from 'path/to/button.vue'; 
import Alert from 'path/to/alert.vue'; 

export { 
    Button, 
    Alert, 
}; 
// myform.js 

import { Button } from 'path/to/components.js'; 

あなたがbutton.vueの場所を変更する場合は、あなただけのcomponents.jsファイル内からのインポートを更新する必要があります。

+0

詳細な回答をいただきありがとうございます。すべてのコンポーネントをインポートするための 'components.js'ファイルを作成する方法を選択します。それは単純な良い方法のように思えます。 – junlin

+0

私は上記の 'vue-injector'についてはどうですか?@Decadeところで、どうすればコメントできますか? – junlin

+0

あなたは私の答えにコメントしているので、@ meにする必要はありません(私は関係なく通知します)。私はvue-injectを使用していないので、実際にコメントすることはできませんが、ドキュメントをすばやく見て、それが仕事をするように見えます。 –

1

あなたがたくさん再構成すると思う場合は、すべての人がインポートする1​​つのファイルを持つことができます。残りのすべてをインポートするので、1つの場所で変更するだけです。

個人的には、依存性注入よりもインポートが好きです。すべてがどこから来ているのかわかりやすい方法です。

関連する問題