#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.

Arc from The Browser Company
Experience a calmer, more personal internet in this browser designed for you. Let go of the clicks, the clutter, the distractions.