#11 Inject w Angularze, polecajka - Arc Browser
Dzisiaj omówię czym jest funkcja inject
, która ukazała się w Angularze 14. Oraz przedstawię Ci nową przeglądarkę.
Inject
O inject
pisałem już w jednym z wcześniejszych wydań, ale dzisiaj chciałbym zagłębić się działanie tej funkcji i raz jeszcze pokazać Ci, czemu jest taka fajna 😎 Funkcja ta została wprowadzona w 14 wersji Angulara.
Co to jest?
inject
jest funkcją, która pozwoli Ci wstrzyknąć providery (serwisy, tokeny, komponenty, itp.) pomijając użycie konstruktora klasy.
Możesz korzystać z dependencies w funkcjach, bez przekazywania ich jako parametry 💪.
A w praktyce?
Wyobraź sobie klasę:
Którą extendujesz:
I musisz zmienić klasę Base
dodając nowy serwis 🙀.
Używając inject
pomijasz konstruktor i nie ma problemu, gdy w Base dodasz kolejną zależność 🙂
Kolejny przykład - prosty CRUD. Dotychczas wszystko znajduje się w serwisie, ale z pomocą inject
mogę zmienić podejście i stworzyć proste funkcje, co jest bardziej “naturalne” dla JS 🤪.
A następnie w efekcie, lub bezpośrednio w komponencie wykorzystam te funkcje w następujący sposób:
Jeśli nie wiesz, czemu zwróciliśmy funkcję w m.in. add
to musisz nadrobić wiedzę o closure
.
Gdzie można użyć inject?
Inject
możesz użyć tylko w "fazie konstruktora" - czyli w construtor
i przy inicjalizacji pól. Nie możesz jej wywołać w setterach Inputa
, w lifecycle hooks lub jakiejkolwiek innej metodzie. Dozwolone jest również użycie w useFactory
w prowiderach.
Możesz używać tego ficzera również w dyrektywach oraz pipe 🎉.
Injection flags
Podczas wstrzykiwania zależności w konstruktorze możesz zmienić zachowanie DI przez użycie dekoratorów @Skip
, @SkipSelf
, @Optional
, @Host
.
inject
również posiada taką możliwość, w dodatku nie musimy korzystać z dekoratorów. Wystarczy dodać kolejny parametr:
Czy powinieneś zatem przestać korzystać ze wstrzykiwania zależności w konstruktorze?
W mojej opinii oba rozwiązania mogą istnieć "obok siebie", nie musisz przepisywać teraz całego projektu 😈.
Chociaż nadal jest to świeżynka to inject
wygląda na prostsze w zrozumieniu i łatwiejsze w utrzymaniu, elastyczniejsze.
Rosnący input lag
Czy komputer z 1983 roku może być szybszy niż współczesny? Na pewno nie, chociaż... komputer z 1983 roku szybciej wyświetla znaki na ekranie.
W badaniu przeprowadzonym przez Dan Luu przeczytasz o szczegółach, a wszystko zaczęło się od przeczucia że obecny sprzęt jest wolniejszy od sprzętu którego autor używał jako dziecko.
Polecajka - Arc Browser
Przeglądarka, która stawia na treść. Nie znajdziesz paska zakładek ani adresu na głównym ekranie.
Wszystko zrobisz za pomocą ⌘
+ T
, takiego odpowiednika Spootlight/Raycast.