wire.js で複数のコンポーネント インスタンスを作成するには、いくつかの方法があります。ニーズに応じて、どれがあなたに適しているかを確認できます。
まず、create
ファクトリを使用して、プロトタイプから新しいインスタンスを作成できます。create
関数またはコンストラクタ モジュールを指定すると、それらが呼び出されます。ただし、create
既存のオブジェクトを指定すると、それを使用Object.create
して新しいインスタンスが作成され、通常どおりにさらに構成できます (例: properties
、init
、アドバイスなどを使用)。とまったく同じようObject.create
に機能するため、プロトタイプ プロパティが共有されることに注意してください。
第二に、wire
ファクトリを使用して目的の効果を実現できます。非シングルトンを独自のワイヤ仕様でラップするだけです。簡単な例を次に示します。
thingThatNeedsATrackingService: {
create: 'my/ThingThatNeedsATrackingService',
properties: {
foo: { wire: 'my/trackingServiceSpec' }
}
},
otherThingThatNeedsATrackingService: {
create: 'my/OtherThingThatNeedsATrackingService',
properties: {
foo: { wire: 'my/trackingServiceSpec' }
}
},
//... more components
そして、でmy/trackingService.js
:
// Export the trackingService instance
$exports: { $ref: 'trackingService' },
trackingService: {
create: {
module: 'Bnaya/App/TrackingService',
args: []
}
},
//... more components if you need
これにより、a の新しいインスタンスが、Bnaya/App/TrackingService
1 つを必要とする 2 つのもののそれぞれに挿入されます。を使用$exports
すると、CommonJS と同様に、ワイヤー スペックから特定のコンポーネントをエクスポートできますexports
。
このアプローチには、内部で「プライベート」コンポーネントを構成でき
my/trackingService.js
、必要に応じてそれらも作成されるという点で、いくつかの優れた利点がありますが、trackingService
表示されるのは のみです。欠点としては、このようなプロトタイプ コンポーネントを独自のワイヤ スペックに分離するのは、少し手間がかかる場合があります。
今後のバージョンの wire.js では、他のタイプのコンポーネント スコープがサポートされるため、一部のケースがより簡単になります。