मैं एक आईओसी कंटेनर प्रासंगिक बाइंडिंग जैसे उन्नत निर्भरता इंजेक्शन सुविधाओं के साथ InversifyJS कहा जाता है विकसित किया है।
आप पालन करने की आवश्यकता 3 बुनियादी कदम के लिए इसका इस्तेमाल करने के लिए:
1. टिप्पणियां जोड़ें
एनोटेशन एपीआई कोणीय 2.0 पर आधारित है:
import { injectable, inject } from "inversify";
@injectable()
class Katana implements IKatana {
public hit() {
return "cut!";
}
}
@injectable()
class Shuriken implements IShuriken {
public throw() {
return "hit!";
}
}
@injectable()
class Ninja implements INinja {
private _katana: IKatana;
private _shuriken: IShuriken;
public constructor(
@inject("IKatana") katana: IKatana,
@inject("IShuriken") shuriken: IShuriken
) {
this._katana = katana;
this._shuriken = shuriken;
}
public fight() { return this._katana.hit(); };
public sneak() { return this._shuriken.throw(); };
}
2. प्रचार बाइंडिंग
बाध्यकारी एपीआई Ninject पर आधारित है:
import { Kernel } from "inversify";
import { Ninja } from "./entities/ninja";
import { Katana } from "./entities/katana";
import { Shuriken} from "./entities/shuriken";
var kernel = new Kernel();
kernel.bind<INinja>("INinja").to(Ninja);
kernel.bind<IKatana>("IKatana").to(Katana);
kernel.bind<IShuriken>("IShuriken").to(Shuriken);
export default kernel;
3. हल निर्भरता
संकल्प एपीआई Ninject पर आधारित है:
import kernel = from "./inversify.config";
var ninja = kernel.get<INinja>("INinja");
expect(ninja.fight()).eql("cut!"); // true
expect(ninja.sneak()).eql("hit!"); // true
नवीनतम रिलीज (2.0.0) कई उपयोग के मामलों का समर्थन करता है:
- कर्नेल मॉड्यूल
- कर्नेल मिडलवेयर
- निर्भरता पहचानकर्ता के रूप में कक्षाएं, स्ट्रिंग शाब्दिक या प्रतीकों का उपयोग
- निरंतर मूल्यों इंजेक्शन
- वर्ग कंस्ट्रक्टर्स इंजेक्शन
- कारखानों के इंजेक्शन
- ऑटो कारखाना
- प्रदाताओं के इंजेक्शन (async कारखाना)
- सक्रियण संचालकों (प्रॉक्सी इंजेक्षन करते थे)
- मल्टी इंजेक्शन
- टैग की गईं बाइंडिंग
- कस्टम टैग सज्जाकार
- नामांकित बाइंडिंग
- प्रासंगिक बाइंडिंग
- अनुकूल अपवाद (जैसे सर्कुलर निर्भरता)
आपको कम से इसके बारे में अधिक सीख सकते हैं https://github.com/inversify/InversifyJS