Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

power-di

2.3.17 • Public • Published

Power DI

CI Coverage Version License

A lightweight Dependency Injection library. Using es6 and other features, remove unnecessary concepts, easy and convenient to use.

Install

npm i power-di --save

Example

a simple example

import { IocContext } from 'power-di';
 
class AService { }
 
// default instance, you can also new IocContext to get a instance.
const context = IocContext.DefaultInstance;
context.register(AService);
const aService = context.get(AService); // a instance of AService

inject with key

class AService { }
 
const context = IocContext.DefaultInstance;
context.register(AService, 'XService'); // key need a string or class, e.g super class or whatever class.
context.get('XService');

use with decorators

const context = new IocContext();
 
@injectable()
class NRService { }
 
@injectable()
class LITestService {
  @inject()
  public testService: NRService;
}
 
const test = context.get(LITestService);

collect impl or extends of some interface/base class

class A { }
 
@classInfo()
class B extends A { }
 
@classInfo()
class C extends A { }
 
@injectable()
class LITestService {
  @imports({ type: A })
  public testService: A[];
}
 
const test = context.get(LITestService); // test.testService as A[];

use in react

const context = new IocContext;
class NRService { }
context.register(NRService);
 
class TestComponent extends Component<{}, {}> {
  @inject()
  service: NRService;
 
  componentDidMount() {
    t.true(this.service instanceof NRService);
  }
 
  render(): any {
    return null;
  }
}
 
create(
  <IocProvider context={context}>
    <TestComponent />
  </IocProvider>
);

Class Loader

Power DI introduced the concept of class loader. We can customize the find rule of ioc.

See the test case for details.

Keywords

Install

npm i power-di

DownloadsWeekly Downloads

139

Version

2.3.17

License

MIT

Unpacked Size

153 kB

Total Files

145

Last publish

Collaborators

  • avatar