Angular Signals. А точно ли нужен? Как работает магия сигналов

preview_player
Показать описание
#angular #frontend
В этом видео расскажу про сигналы в Angular, как они работают, сравню с RxJS

00:00 Вступление
00:65 Что такое Signal
05:42 Магия Signal
12:56 Интеграция с RxJS
14:00 Отличия Signal от BehaviorSubject
19:45 Как в RxJS сделать поведение аналогично Signal
20:38 Почему Signal это не революция
24:56 Заключение
Рекомендации по теме
Комментарии
Автор

Спасибо за видео. Это просто топ. Ждем еще на подобные темы!!!

Султан-ро
Автор

Спасибо большое за видео по Angular. В то время как большенство пилят видосы по React, мало хорошего контента по Angular.

АртёмПиврик
Автор

Спасибо за ваше ценное время и опыт, которые вкладываете в контент на своем канале!

ivan
Автор

Рад видеть и слышать автора, жду каждое видео, так как всегда полезная информация. Только жаль, что редко)

АлексейКресников
Автор

Спасибо за разъяснения, очень интересно

time_to_play_
Автор

Очень интересное видео. Жду продолжения!

fidget
Автор

Спасибо за полезную информацию. Ждем новых видосов по этой теме.)

dovudshokhudoidodov
Автор

Александр, в первую очередь огромное спасибо за Ваши видео. У Вас всегда всё очень подробно, в то же время компактно по времени и очень понятно. Как в первый раз прочитал про сигналы, то тут же возникли ассоциации с Vue2, в котором computed уже был реализован. Как я понимаю сигналами хотят привлечь разработчиков реакта, которых сейчас большинство.

steazeYT
Автор

Перешел со vue на angular, глядя на то как можно работать с signal, ощущаю вьетнамские флэшбэки)

СлаваСавченков-кю
Автор

А в каких кейсах по итогу эти сигналы надо использовать?

vladwolf
Автор

Спасибо за видео. Как всегда максимально полезно и доходчиво. Но хотел уточнить один момент. Разве не уместнее вместо debounceTime(0) использовать observeOn(asyncSceduler), когда нам нужен именно один тик?

dmitrycheck
Автор

А есть ли смысл использовать сигналы, если нет необходиости использовать эффекты или compute?

Видел где-то в примерах на просторах интернета, что сделали сингал isLoading() для обработки загрузки, пока асинхронный запрос куда-то ходит.
А в чем смысл такого подхода, если я могу просто не сигналом сделать переменную isLoading?

В другом месте прочтал, что сигналы позволят отказаться от zone.js.
Но никак не пойму, как это должно работать? Мы же не можем какой-то настройкой отключить использование ангуляром zone.js?

Там же было написано, что не нужно будет использовать стратегию onPush.
Если у нас будет стоять CheckAlways, как сигналы защитят от постоянной проверки компонента?

pdidevich
Автор

Интересно, как в computer реализовано получение списка переменных, от которых он зависит. Если в rx там явно передается массив с зависимостями, то тут передается просто функция, где в шаблоне строки вызываются 2 метода. Неужели это как-то парсится? Или там вообще нет такой зависимости, а просто каждый раз при обращении происходит перерасчет?

dmitriyobidin
Автор

Здравствуйте, Александр. Можно ли немного подробнее про Observable рассказать? В частности о чем вы говорили в одном из роликов, про то что нужно возвращать new Observable из методов сервиса, который работает с httpClient?
В интернете куча статей но я не смог найти на волнующий меня вопрос конкретного ответа. Спасибо.

BorderInVais
Автор

Сигналы классные, можно сказать бойлерплейт уменьшает да, плюс так как там всегда есть значение, то типы лучше работают, например async pipe, который всегда возвращает value | null, приходится проверку на null в html разметке делать. Но в синхронных обзерваблах есть плюс. Сейчас computed через setTimeout вызывается, то есть когда мы нажали на кнопку, у нас сначала ангуляр запустит чендж детекшен для оригинальных сигналов, отрисует, а потом для computed. То есть будет двойной рендеринг, в то время как combineLatest всего один цикл прогонит. Но код выглядит лаконичнее для большинства сценариев и типизация более четкая - спору нет. Я сейчас стал в проекте вьюмодель на сигналы менять, а сам store остается в виде обзерваблов. Пока удобно как раз изза типизации. Если очень грубо, то асинк пайп поменялся на toSignal(..., { requireSync: true })

Dimonina
Автор

По поводу перфоманса: чаще всего тормозит LCP с TBT, но тут врываются deferable views и как сигналы могут апнуть показатели lighthouse - пока что трудно представить.

MrKOHKyPEHT
Автор

вместо комбайнЛейтест можно было бы зип юзануть

sashachechoitko
Автор

минус rxJS пайпа async в том, что изначально передаётся null, а не undefined. Сигналы позволяют undefined сразу присваивать. Это вы пропустили) Ну и плюс сигналы как раз позволяют избавится от OnPush. Так же вы задали вопрос "Каким образом angular знает, что computed свойство изменилось и рендерит новое значение?" - всё просто, за счёт сигналов как раз ангуляр и понимает, что в конкретном месте идёт расхождение сигналов и обновляет ту ноду, а не запускает changeDetection

VyacheslavGGWP
Автор

слегка бесит формат js'a в котором первую фигурную скобку переносят на новую строку

surock
Автор

видео норм. Но не все понятно.
Единственное что сбивает иногда - произношение. "Кампутит", "титл" :)

Stepanmc