Signals JS
Протягом останніх років ми стикалися з різноманітними проблемами пов’язаними з управлінням станом додатку та інструментами, які допомагають вирішити ці проблеми. Останнім часом все більшої популярності та переосмислення набувають Signals, як механізм управління станом додатку. На сьогодні більшість UI frameworks таких як SolidJS, Vue, Preact, Qwik, та Angular вже мають підтримку Signals. Signals намагаються вирішити проблеми пов’язані з оптимізацією процессу рендеринга компонентів та інтеграцією з різноманітними UI фреймворками, але можуть бути використані і за межами фронтенд розробки.
Signals – це обгортка, яка може сповістити визначені частини коду у разі їх (signals) зміни. Вони можуть містити як примітивні значення, так і складні структури даних. Signals формують граф залежності де computed signals залежать від state signals або інших computed signals і забезпечують ефективне поширення змін по всій системі. Також вони дозволяють зробити точковий ререндер компонента тільки там, де використовується значення сигналу та зменшити рендеринг залежних компонентів, що збільшує продуктивність додатку. Signals автоматично відслідковують свої залежності так, що коли змінюється state signal, тільки computed signals, які залежать від нього, оновлюють свої значення. Додатково computed signals використовують memorization, щоб закешувати свої значення та зменшити необхідність в перерахунках.
Багато фреймворків пропонувало свій механізм управління станом додатку, незважаючи на відсутність такого механізму вбудованого в JS, тож з’явилася пропозиція додати Signals до стандарту JavaScript. Ціль цієї пропозиції – відокремити реактивну модель сигналів від процесу рендеренгу, що дозволить розробникам змінювати UI технології, не змінюючи код, який не відноситься до UI частини. Тож продовжимо слідкувати за розвитком Signals та нових способів їх використання.