unleash the power of angular with knowledge of patterns · ngmodule is angular di configuration...

79
Unleashing the power of patterns with angular DMITRIY SHEKHOVTSOV

Upload: others

Post on 03-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Unleashing the power of patterns with angular

DMITRIY SHEKHOVTSOV

Page 2: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 3: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

@valorkin

Page 4: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

ngx-bootstrap

Page 5: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Your most used tool?

Page 6: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 7: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

!

Page 8: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 9: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Patterns

Page 10: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

- singleton - factory - pub/sub - adapter

Page 11: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

- DI - module - IoC - CQRS

Page 12: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 13: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Dependency injection<pattern>

Page 14: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

DEPENDENCY INJECTION

▸dependency injection is a technique whereby one object supplies the dependencies of another object.

Page 15: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 16: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

DI for 5-years oldJohn Munsch, 28 October 2009

Page 17: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

DI for 5-years old

Page 18: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

DI for 5-years old

Page 19: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

DI for 5-years old

Page 20: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Do we really need DI?

Page 21: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

“ Dependency injection in Angular isn’t worth it

Page 22: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

WITHOUT DEPENDENCY INJECTION

Page 23: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 24: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

DI “common sense”

Page 25: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Module<pattern>

Page 26: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

common.js

Page 27: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

ES6

Page 28: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

A bit of history

Page 29: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

IIFE

Page 30: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 31: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 32: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 33: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 34: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 35: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

- name space - encapsulation - structure code - manage dependencies

Page 36: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Module Concept

Page 37: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

- accomplish a particular function

- or contain everything necessary

to accomplish a particular task

Page 38: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 39: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

@NgModule

Page 40: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

NgModule is Angular DI configuration point

Page 41: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

declarations

Page 42: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

exports

Page 43: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

imports

Page 44: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

providers

Page 45: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Typical Problems

Page 46: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Shared modules & Using component from child

module

Page 47: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Lazy loaded modules & using components from

parent module

Page 48: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Services with the same name

Page 49: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Testing module configuration

Page 50: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 51: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 52: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 53: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

CHANGE DETECTION

Page 54: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

JS memory notes

Page 55: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Data StackPrimitive Values

Memory Heap

Object

Page 56: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

let a = {prop:1}

Data StackPrimitive Values

Memory Heap

Object

Page 57: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

a.prop = 2Data StackPrimitive Values

Memory Heap

Object

Page 58: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Memory Heap

Old Object

Object

let a = {prop:2}

Data StackPrimitive Values

Page 59: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

DIRTY CHECKING<Angular js>

Page 60: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Scope

Data StackPrimitive Values

Memory Heap

Object

Object

clone

Data StackPrimitive Values

Memory Heap

Object

Object

previous scope state

Page 61: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

previous state

Data StackPrimitive Values

Memory Heap

Object

Object

Deep diff

Data StackPrimitive Values

Memory Heap

Object

Object

Current state

Page 62: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Scope

Data StackPrimitive Values

Memory Heap

Object

Object

clone

Data StackPrimitive Values

Memory Heap

Old Object

Object

previous scope state

Page 63: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

STRICT EQUALITY

<angular>

Page 64: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

previous state

Data StackPrimitive Values

Memory Heap

Object

Object

Strict quality diff

Data StackPrimitive Values

Memory Heap

Object

Object

Current state

Page 65: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

IMMUTABILITY<principle>

Page 66: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Patterns are everywhere

Page 67: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 68: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Single Responsibility<pattern>

Page 69: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Chain Of Responsibility

<pattern>

Page 70: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 71: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Pure functions<pattern>

Page 72: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Strategy<pattern>

Page 73: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 74: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 75: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules
Page 76: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

Summary

Page 77: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

DO NOT OVERUSE

Page 78: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

PROS AND CONS

Page 79: Unleash The Power Of Angular With Knowledge of Patterns · NgModule is Angular DI configuration point. declarations. exports. imports. providers. Typical Problems. Shared modules

THANKS!@valorkin