JavaScript Signals proposal прийнято до розгляду комітетом TC39
Нещодавно всі, хто слідкує за розвитком JavaScript, активно обговорювали proposal на додавання сигналів в стандарт EcmaScript, а вчора цей документ просунувся в процесі на stage 1. Це друга стадія розгляду нових функцій, якими пропонують розширити стандарт мови (усього їх 6). Це означає, що комітет ТС39 визнав потенційну цінність сигналів і погодився розглянути їхню подальшу імплементацію.
Achievement Unlocked! Signals advance to Stage 1 in TC39.
— Rob Eisenberg (@EisenbergEffect) April 11, 2024
Big thanks to @JatinRamanathan, @littledan, and @wycats for presenting today.
Lots more work to do during Stage 1, but we're now officially under consideration.
Отже, що таке сигнали? Це елемент реактивного програмування, мета якого зберігати стан застосунку і сповіщати підписників про зміну цього значення. Фактично сигнали — це імплементація Observer патерну.
Насправді це не зовсім нова ідея. Один з перших популярних інструментів, який застосував схожий підхід, була бібліотека knockout.js. У ній використовувалися observebles для прив’язки даних ViewModel об’єкта до елементів розмітки. Наразі ця бібліотека вже не розвивається.
Серед сучасних інструментів «нове життя» цій ідеї принесла бібліотека Solid, в якій управління станом застосунку (state management) побудовано навколо сигналів. Нижче приклад коду найпростішого використання сигналів із сайту SolidJS .
import { render } from "solid-js/web"; import { createSignal } from "solid-js"; const [count, setCount] = createSignal(0); setInterval(() => setCount(count() + 1), 1000); function Counter() { return <div>Count: {count()}</div>; } render(() => <Counter />, document.getElementById('app'));
Згодом свої імплементації сигналів почали з’являтися і в інших бібліотеках:
- у Vue концепцію сигналів реалізовують refs;
- Angular 16 ввели сигнали на заміну «важковіснії» zone.js;
- сигнали додані у Svelte в якості внутрішнього інструменту;
- у Preact також сигнали можна використовувати для управління станом застосунку.
Інша сторона такої популярності — «зоопарк» імплементацій, які несумісні між собою. Тому автори документу досить добре попрацювали із розробниками бібліотек і фреймворків, разом із переліченими, щоб підготувати максимально вдалий для всіх варіант. Серед наступних кроків розробка прототипу і його інтеграція в кілька інструментів, щоб перевірити життєздатність ідеї.
Ознайомитися з документом proposal можна тут. Також про мотивацію і деякі технічні деталі можна прочитати в блозі автора Rob Eisenberg.
7 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів