基础
本文展示了一些设置InversifyJS的基本示例。
非常基础的示例。
声明了如下项目:
- 三个接口
Warrior
、Weapon
和Battle
。 - 两个
Weapon
接口的实现:Katana
和Shuriken
。 - 两个
Warrior
接口的实现:Ninja
和Samurai
。 - 一个
Battle
接口的实现:EpicBattle
。
勇者拿到了一件趁手的武器,额...还标记了一些元数据(metadata)。
我们使用了一些限制条件whenTargetNamed
和whenParentNamed
来约束勇者Warrior
能拿(注入和实现)哪些武器Weapon
,以及什么级别的勇者Warrior
才能参加EpicBattle
:
container.bind<Warrior>(SERVICE_IDENTIFIER.WARRIOR).to(Ninja).whenTargetNamed(TAG.CHINESE);
container.bind<Warrior>(SERVICE_IDENTIFIER.WARRIOR).to(Samurai).whenTargetNamed(TAG.JAPANESE);
container.bind<Weapon>(SERVICE_IDENTIFIER.WEAPON).to(Shuriken).whenParentNamed(TAG.CHINESE);
container.bind<Weapon>(SERVICE_IDENTIFIER.WEAPON).to(Katana).whenParentNamed(TAG.JAPANESE);
container.bind<Battle>(SERVICE_IDENTIFIER.BATTLE).to(EpicBattle);
1
2
3
4
5
2
3
4
5
怎么运行示例呢?
您可以先拉取项目:
git clone https://github.com/inversify/inversify-basic-example.git
1
然后进入示例文件夹📂安装依赖:
cd inversify-basic-example
npm install
1
2
2
接着将TypeScript代码编译成JavaScript代码:
gulp
1
这些生成的代码可以在dist
目录📂中查看。
接着运行代码就能看到示例了。
node dist/main.js
1
控制台应该会打印下面内容:
FIGHT!
Ninja (Shuriken)
vs
Samurai (Katana)
1
2
3
4
2
3
4