Heim > Artikel > Web-Frontend > Eine eingehende Analyse der Prinzipien der AngularJS-Abhängigkeitsinjektion
Dieser Artikel enthält hauptsächlich eine ausführliche Analyse des AngularJS-Abhängigkeitsinjektionsprinzips. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich sein wird. Folgen wir dem Herausgeber und werfen wir einen Blick darauf.
Abhängigkeitsinjektion: Abhängigkeitsinjektion AbkürzungDI
Beispiel:
var xiaomi = new Xiaomi(); // 假设小米公司生产了一台xiaomi手机 createShipment(xiaomi); //此方法能把货送给顾客,这叫做把小米手机注入到createShipment()方法
Erneut annehmen Wenn die Methode createShipment() drei Parameter erfordert (Mobiltelefon, Kurierunternehmen, Bestelldetails), benötigt sie:
var xiaomi = new Xiaomi(); // 不仅要生产手机 var shipCompany = new ShipCompany(); // 还要自己建立个快递公司 var order = new Order(); // 还要自己建立线上线下平台做订单 createShipmentxiaomi,shipCompany,order); // 虽然小米已经这么干了,但还是很累的
Zusätzlich zu den oben genannten Beispiel: Xiaomi Gibt es keine andere Möglichkeit, in meinem eigenen Geschäft zu verkaufen? Sie müssen nicht nur Mobiltelefone herstellen, sondern sich auch um das Geschäft kümmern und Expresslieferungen durchführen. Sind Sie nicht müde? Xiaomi kann dies nicht nur selbst tun, sondern es auch auf Taobao, JD.com, Suning und anderen Plattformen verkaufen und Expressunternehmen wie Santong Yishun für die Lieferung von Waren nutzen. Dies ist das Problem, das die Abhängigkeitsinjektion lösen muss. Durch die Nutzung von Taobao, JD.com, SF Express und anderen Unternehmen sollen Verkaufsservice (sellService), Express-Lieferservice (sendService) usw. in Xiaomi integriert werden!
Inversion of Control: Inversion of Control AbkürzungIOC
IOC bezieht sich auf die Übertragung der Kontrolle von Abhängigkeiten vom Inneren des Codes in das Innere des Codes. Xiaomi hat beispielsweise die Befugnis übertragen, Mobiltelefone an Außenstehende zu verkaufen und zu liefern. Ob Taobao verkauft oder JD.com, ob YTO liefert oder SF Express liefert, Xiaomi muss sich nur darum kümmern Mobiltelefone. Überlassen Sie berufliche Angelegenheiten den Profis.
IOC ist ein loser Kopplungsmodus, und das Implementierungsmittel ist die Abhängigkeitsinjektion.
Injektor:
Konstruktor(privat someService: SomeService) { ...}
Dieser Satz bedeutet, dass diese Komponente einen someService Das Attribut von gibt an, dass sein Typ SomeService ist, und dann geht angular zum Anbieter, um SomeService und fügen Sie diese Instanz dann in someService ein. 提供器: providers:[{provide:SomeService,useClass:SomeService}] providers:[SomeService]//provide跟useClass相同可简写为这个 例: app.module.ts 上面的代码怎么理解呢? 小米声明sellService对象(也是属性),叫sellService去卖手机,sellService呼叫售卖服务,这个服务是SellService类型的(线上销售),那么angular就会去提供器里面找谁在提供这个售卖服务,至于是淘宝还是京东那要看提供器里面的,用的哪个快递公司就更加不需要小米公司来管了。angular找到SellService之后会new一个ShunfengService的一个实例(找一家顺丰门店),找到之后把服务注入给小米公司的sellService。sellService就跑到那家顺丰门店填送货单(sendProduct方法)把手机送给客户了。 各位看官应该能想出更好的比喻,欢迎交流。如果有不妥之处欢迎指正。 相关推荐:@NgModule({
providers:[{provide:SellService,useClass:ShunfengService}], // 这个是淘宝,用的顺丰
// providers: [{provide:SellService,useClass:YuantongService}] // 这个是京东,用的圆通})
product.component.ts
@Component({ ...
})
export class ProductComponent implements OnInit { product: Product; constructor(sellService: SellService) {
this.product = this.sellService.sendProduct();
}}
Das obige ist der detaillierte Inhalt vonEine eingehende Analyse der Prinzipien der AngularJS-Abhängigkeitsinjektion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!