2016-06-10 7 views
1

In Aurelia.js, sehe ich Unterschiede Beispiele, wie Menschen Abhängigkeiten injizieren, aber keine klare Antwort gefunden haben, wann explizit in inject Annotation enthalten oder wie es ist.Wann Abhängigkeit injizieren oder wie in Aurelia verwenden?

Zum Beispiel:

import {inject} from 'aurelia-framework'; 
import {X} from 'X'; 
@inject(X) 
export class Y { 
    constructor(X) { 
     this.x = X; 
    } 
} 

oder

import {X} from 'X'; 
export class Y { 
    constructor() { 
     this.ABC = someMethod(X); // using X without inject 
    } 
} 

Warum jemand einen über die andere wählen würde?

+0

, wenn meine Antwort hilfreich war, bitte upvote und akzeptieren :) –

Antwort

2

Wenn Sie import X from 'X'; wenn X eine Klasse und keine Instanz einer Klasse ist, sollten Sie Dependency Injection verwenden, damit Aurelia Ihnen eine Instanz der Klasse zur Verfügung stellen kann.

Manchmal exportiert ein Modul Exportfunktion (en) eine Objektinstanz. In diesen Fällen sollten Sie DI nicht verwenden.

+0

Das ist die richtige Antwort. –

4

Dependency-Injektion ist eigentlich eine design pattern, die Aurelia vollständig umfasst. Obwohl Sie nicht gezwungen sind, dieses Muster zu übernehmen, ist es eine Best Practice, da der meiste Aurelia-Quellcode diesem Muster folgt. Core-Team-Mitglied Jeremy Danyow hat einen brillanten Artikel zu diesem Thema in zwei Teilen geschrieben, die ich unten verlinken werde.

Inversion of Control mit Aurelia von Jeremy Danyow: Part 1, Part 2

+0

Wenn diese Antwort hilfreich war, user2874945, bitte upvote und akzeptiere und ich werde so glücklich sein –