demystifying dependency injection: angular vs nest · injection: angular vs nest. kammysliwiec...

81
KAMMYSLIWIEC DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST

Upload: others

Post on 11-Mar-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST

Page 2: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

KAMIL MYSLIWIEC CREATOR OF NESTJS | CO-FOUNDER OF TRILON.IO

GOOGLE DEVELOPER EXPERT @KAMMYSLIWIEC

Page 3: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMIL MYŚLIWIEC SOFTWARE ENGINEER

@KAMMYSLIWIEC

Page 4: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

Adonis Express Koa Nest Fastify

Page 5: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

NESTJS WWW.NESTJS.COM

@NESTFRAMEWORK

KAMMYSLIWIEC

Page 6: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

DEPENDENCY INJECTION

Page 7: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

private httpService = new HttpService();

private logger = new Logger();

}

Page 8: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

private httpService = new HttpService();

private logger = new Logger();

}

Page 9: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 10: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 11: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 12: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

private httpService = new HttpService();

private logger = new Logger();

}

Page 13: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

const Injectable: ClassDecorator = (target: Object) => {};

Page 14: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

COMPILER METADATA

Page 15: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 16: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CatsService = __decorate(

[__metadata('design:paramtypes', [HttpService, Logger])],

CatsService,

);

Page 17: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CatsService = __decorate(

[__metadata('design:paramtypes', [HttpService, Logger])],

CatsService,

);

Page 18: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CatsService = __decorate(

[__metadata('design:paramtypes', [HttpService, Logger])],

CatsService,

);

Page 19: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 20: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 21: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

REFLECTION API

Page 22: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

Reflect.getMetadata('design:paramtypes', CatsService);

Page 23: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

Reflect.getMetadata('design:paramtypes', CatsService);

Page 24: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

Reflect.getMetadata('design:paramtypes', CatsService);

Page 25: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

const metadata = Reflect.getMetadata(

‘design:paramtypes',

CatsService,

);

// metadata = [HttpService, Logger]

Page 26: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

ENQUIRER INJECTOR

CONTAINERKEY

VALUE

Page 27: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

BEHIND FRAMEWORKS

Page 28: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CatsService = __decorate(

[__metadata('design:paramtypes', [HttpService, Logger])],

CatsService,

);

Page 29: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CatsService = tslib_1.__decorate(

[tslib_1.__metadata(

'design:paramtypes',

[HttpService, Logger],

)],

CatsService,

);

Page 30: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

i1.ɵdid(

1,

4308992,

null,

0,

i13.HomepageComponent,

[i1.ChangeDetectorRef, i7.Router],

null,

null,

);

Page 31: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

i1.ɵdid(

1,

4308992,

null,

0,

i13.HomepageComponent,

[i1.ChangeDetectorRef, i7.Router],

null,

null,

);

Page 32: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

factory: function AppComponent_Factory(t) {

return new (t || AppComponent)(

ɵɵdirectiveInject(ChangeDetectorRef),

ɵɵdirectiveInject(Router),

);

}

Page 33: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

factory: function AppComponent_Factory(t) {

return new (t || AppComponent)(

ɵɵdirectiveInject(ChangeDetectorRef),

ɵɵdirectiveInject(Router),

);

}

Page 34: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

REFLECTION API CHALLENGES

Page 35: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

INTERFACES

Page 36: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 37: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: IHttpService,

private logger: Logger,

) {}

}

Page 38: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

const metadata = Reflect.getMetadata(

‘design:paramtypes',

CatsService,

);

// metadata = [Object, Logger]

// IHttpService === Object

Page 39: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

POTENTIAL SOLUTION

Page 40: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

GENERICS

Page 41: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 42: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private httpService: HttpService,

private catsRepository: Repository<Cat>,

) {}

}

Page 43: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

const metadata = Reflect.getMetadata(

‘design:paramtypes',

CatsService,

);

// metadata = [HttpService, Repository]

// what about Cat class?

Page 44: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

POTENTIAL SOLUTION

Page 45: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CIRCULARDEPENDENCIES

Page 46: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

private dogsService: DogsService,

) {}

}

Page 47: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class DogsService {

constructor(

private catsService: CatsService,

) {}

}

Page 48: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

const metadata = Reflect.getMetadata(

‘design:paramtypes',

CatsService,

);

// metadata = [undefined]

// DogsService === undefined

Page 49: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

POTENTIAL SOLUTION

Page 50: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable()

class CatsService {

constructor(

@Inject(forwardRef(() => DogsService))

private dogsService: DogsService,

) {}

}

Page 51: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

function forwardRef(forwardRefFn: ForwardRefFn): Type<any> {

(<any>forwardRefFn).__forward_ref__ = forwardRef;

...

}

Page 52: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

function forwardRef(forwardRefFn: ForwardRefFn): Type<any> {

(<any>forwardRefFn).__forward_ref__ = forwardRef;

...

}

Page 53: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

INJECTOR TREES

Page 54: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

ROOTA B C

COMPONENT A

COMPONENT B

COMPONENT C

@Component({})

export class CmpC {

constructor(private c: C) {}

}

Page 55: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

ROOTA B C

COMPONENT A

COMPONENT B

COMPONENT C

@Component({})

export class CmpC {

constructor(private c: C) {}

}

Page 56: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

ROOTA B C

COMPONENT A

COMPONENT B

COMPONENT C

@Component({})

export class CmpC {

constructor(private c: C) {}

}

Page 57: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

ROOTA B C

COMPONENT A

COMPONENT B

COMPONENT C

@Component({})

export class CmpC {

constructor(private c: C) {}

}

Page 58: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

INJECTORSIN NEST

Page 59: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CORE

USERS

SHARED

APPLICATION

AUTH BLOG

Page 60: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

Page 61: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CORE

USERS

SHARED

APPLICATION

AUTH BLOG

Page 62: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CORE

USERS

SHARED

APPLICATION

AUTH BLOG

Page 63: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CORE

USERS

SHARED

APPLICATION

AUTH BLOG

Page 64: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CORE

USERS

SHARED

APPLICATION

AUTH BLOG

Page 65: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CORE

USERS

SHARED

APPLICATION

AUTH BLOG

Page 66: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CORE

USERS

SHARED

APPLICATION

AUTH BLOG

Page 67: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

GLOBALSCOPE

Page 68: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CORE

USERS

SHARED

APPLICATION

AUTH BLOG

Page 69: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

CORE

USERS

SHARED

APPLICATION

AUTH BLOG

Page 70: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

WHAT’S NEW

Page 71: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

SCOPES

Page 72: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

REQUEST

PROVIDER

REQUEST REQUEST

Page 73: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

REQUEST

PROVIDER

REQUEST REQUEST

PROVIDER PROVIDER

Page 74: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable({ scope: Scope.REQUEST })

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 75: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable({ scope: Scope.REQUEST })

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 76: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

PROVIDER C

PROVIDER A

PROVIDER B PROVIDER D

PROVIDER A PROVIDER A

Page 77: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

@Injectable({ scope: Scope.TRANSIENT })

class CatsService {

constructor(

private httpService: HttpService,

private logger: Logger,

) {}

}

Page 78: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

OPEN SOURCE

Page 79: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIEC

Page 80: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIECKAMMYSLIWIEC

WWW.TRILON.IO

Page 81: DEMYSTIFYING DEPENDENCY INJECTION: ANGULAR VS NEST · injection: angular vs nest. kammysliwiec kamil mysliwiec creator of nestjs | co-founder of trilon.io ... . kammysliwiec thank

KAMMYSLIWIECKAMMYSLIWIEC

THANKYOU

@KAMMYSLIWIEC