基础

原文链接

本文展示了一些设置InversifyJS的基本示例。

非常基础的示例。

声明了如下项目:

  • 三个接口WarriorWeaponBattle
  • 两个Weapon接口的实现:KatanaShuriken
  • 两个Warrior接口的实现:NinjaSamurai
  • 一个Battle接口的实现:EpicBattle

勇者拿到了一件趁手的武器,额...还标记了一些元数据(metadata)。

我们使用了一些限制条件whenTargetNamedwhenParentNamed来约束勇者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

怎么运行示例呢?

您可以先拉取项目:

git clone https://github.com/inversify/inversify-basic-example.git
1

然后进入示例文件夹📂安装依赖:

cd inversify-basic-example
npm install
1
2

接着将TypeScript代码编译成JavaScript代码:

gulp
1

这些生成的代码可以在dist目录📂中查看。

接着运行代码就能看到示例了。

node dist/main.js
1

控制台应该会打印下面内容:

FIGHT!
                Ninja (Shuriken)
                vs
                Samurai (Katana)
1
2
3
4
上次更新: 1/14/2020, 4:49:04 PM