После реализации проекта на solidjs нет никакого желания возвращаться на реакт. Не нужно греть голову ререндерами, юсколбеками, юсмемо, мемо - которые ломается, если колбек не мемоизированный передал в пропсах. Всё работает максимально быстро и понятно. Испытываешь ментальный комфорт, когда знаешь, что обновление не вызовет каскадный ререндер всей страницы. Сигналы в том или ином виде уже есть во Вью, и можно вживую убедиться, какая разница в скорости работы приложения на примере Озона (Вью) и Яндекс Маркета (неповоротливый монстр написанный на Реакт).
@@marcinskavysh8690 ну блин, с ребятами, которые пишут фронт, обслуживающий миллионы юзеров в день и минута простоя из-за ошибки стоит сотни миллионов, ищущими информацию о сигналах - тяжело поспорить ;)
Мне кажется, что команда react, как бараны, упёрлись в "свой путь". В проекте используем реактивный state-менеджер reatom. Возвращаться к разработке на голом react - боже упаси! В серверные компоненты и компилятор, как в серебряную пулю - не верю.
Насчет Vue: Evan писал то ли в гитхабе, то ли в Твиттере. Далее не дословно: "Если сигналы стандартизуют, то у Vue есть большой шанс внедрить их в пакеты реактивности". Сейчас же Vue построен на прокси, что и так довольно удобно и сильно походит на сигналы)
Это лишь подход, который немного противоречит подходу react (вызвать что бы обновить), и теперь имеем 2 подхода, которые нужно будет использовать вместе, так как подход реакт никуда не девается, и сигналами он полностью не заменяется. Тот же RTK или Redux с Immer, это удобно, так как избавляет от больших конструкций со спредами, а сигналы ничего не меняют. Это все плохое влияние вьюшников с их proxy и templates :D
Jotai - 1,1 миллиона скачиваний в неделю. Плюс есть пропоузал о добавлении сигналов в ECMAScript. Как по мне, реактивность - это будущее и чуть ли не единственно верный способ разработки интерфейсов.
@@it-sin9k Это почему?) Не вижу особых проблем с реактивном программированием, по необходимости можно всегда выдернуть иммутабельную копию объекта. А вот синтаксис удаления элемента из массива в реакте по прежнему выглядит как хтонический ужас, не говоря уж про объекты.
Ты увидел лишь проксирование (что в принципе и взято за основу в vue), а не vue в react. Тот же immer уже есть везде, rematch, rtk и его можно легко подключить к сырому redux
На сколько знаю, в планах команды по Angular это полный отказ Zone.js в пользу Signals. И уже проделано очень много работы по этому направлению. В том числе и в взаимодействие rxjs и Signals, например, экспериментальный toSignals(observable)
Доп нода там нужна, чтобы не ререндерить компонент целиком, а менять только места, где используются сигналы. Они создают очень быстрый и легковесный VDOM для отображения value)
Парни реально придумали Vue 3 в React и назвали это Signals) Было время, когда Vue копировал идеи React, но, доводил их до ума. Теперь кажется, будто тенденция идёт наоборот. Спасибо за видео!
@@it-sin9k Возможность раз и навсегда забыть про повторные рендеры из-за изменения состояния, будь то локальное или внешнее. Без мемо и прочих мемоизаций это выглядит магией) если использовать сигналы хотя бы как альтернативу базовому useState, то уже можно кратно выиграть во всех аспектах уровня производительность/бойлерплейт
@@it-sin9k в первую очередь то, что даже если использовать сигналы всего лишь вместо дефолтного useState, то рост производительности будет кратным, при этом о различных способах мемоизации(как и говорилось в видео) можно забыть. Показалось непростительным проходить мимо, с учётом таких вводных)
Мобикс - это стейт интерфейса и его можно использовать, в том числе и с сигналами. react-mobx = это просто сахарок, который оборачивает компомнент в memo и подписывается на события обновления стора.
@@sergeydostovalov6180 что значит "стейт интерфейса"? То что сигналы можно использовать с mobx - без вопросов, правда зачем мешанина эта. Мой посыл в том, что mobx отлично заменяет сигналы и обе библиотеки, по сути, выполняют одну и ту же роль: реактивность + точечный ререндер const store = observable({ count: 0, setCount(value) { this.count += value } }) VS const count = signal(0); const setCount = value => count.value = value; По сути одно и то же получаем
Пока все нормальные фреймворки переходят на актуальные и эффективные концепции, реактоводы продолжают есть кактус и рискуют оказаться в позиции пользователей JQuery
А причём тут вообще memo?) В видео о нём речь не идёт, а сигналы работают по другому принципу. Это скорее useRef на HTMLElement с подпиской на прокси-объект.
Я всё больше убеждаюсь, что фреймворк в половине случаев вообще не нужен. React отлично справляется, когда нужно быстро создать простой интерфейс, но как только задачи выходят за рамки верстки и базовых кнопок, начинаются сложности. Например, сравните реализацию бесконечного скролла на чистом JavaScript и в React. Разница очевидна: в случае React приходится преодолевать ограничения виртуального DOM, тогда как с использованием ванильного JavaScript таких проблем нет. В этом смысле мне больше всего нравится Svelte, который предоставляет удобный каркас для построения интерфейсов, но при этом активно поощряет использование ванильного кода. Это позволяет добиться лучшего баланса между удобством разработки и контролем над кодом
Зато в оставшейся половине случаев в случае экспоненциального роста проекта получаешь монстра, которого очень тяжело поддерживать, а тем более пилить новые фичи. В итоге получается что лучше взять заранее полновесный фреймворк и перестраховаться, нежели переписывать всё при внезапном росте приложения. Имел, к сожалению, печальный опыт поддержки проектов на ванилле, а также написание велосипедов для Preact (вроде SSR или Swiper) вместо использования готового NextJS.
После реализации проекта на solidjs нет никакого желания возвращаться на реакт. Не нужно греть голову ререндерами, юсколбеками, юсмемо, мемо - которые ломается, если колбек не мемоизированный передал в пропсах. Всё работает максимально быстро и понятно. Испытываешь ментальный комфорт, когда знаешь, что обновление не вызовет каскадный ререндер всей страницы. Сигналы в том или ином виде уже есть во Вью, и можно вживую убедиться, какая разница в скорости работы приложения на примере Озона (Вью) и Яндекс Маркета (неповоротливый монстр написанный на Реакт).
расскажите пожалуйста, что за идущая в ногу со временем компания позволила вам использовать solidjs на проектах?)
@@Zubbol та же компания, которая разрешит вам использовать сигналы ;)
Дайте угадаю - в резюме это обычно строчка называется фриланс) хахаххаахах
@@marcinskavysh8690 ну блин, с ребятами, которые пишут фронт, обслуживающий миллионы юзеров в день и минута простоя из-за ошибки стоит сотни миллионов, ищущими информацию о сигналах - тяжело поспорить ;)
Нет Реакта - нет лишних рендеров!
(Шутка юмора.)
Это, просто, офигенно 👍
Классно. Спасибо Саша.
Привет) ты еще смотришь мои видео)) приятно))
Мне кажется, что команда react, как бараны, упёрлись в "свой путь".
В проекте используем реактивный state-менеджер reatom. Возвращаться к разработке на голом react - боже упаси!
В серверные компоненты и компилятор, как в серебряную пулю - не верю.
Каждый раз когда после ангуляра и вью попадается реакт хочется выть именно из-за отсутствия удобной реактивности
должен же быть хоть один островок без реактивщины)
@ согласен, но этот «островок» является материком, так как за ним 80% рынка, от чего еще больней 🫣
@@it-sin9k особенно иронично, что фраемворк без реактивности называется реакт 😂
Насчет Vue: Evan писал то ли в гитхабе, то ли в Твиттере. Далее не дословно: "Если сигналы стандартизуют, то у Vue есть большой шанс внедрить их в пакеты реактивности". Сейчас же Vue построен на прокси, что и так довольно удобно и сильно походит на сигналы)
Это лишь подход, который немного противоречит подходу react (вызвать что бы обновить), и теперь имеем 2 подхода, которые нужно будет использовать вместе, так как подход реакт никуда не девается, и сигналами он полностью не заменяется. Тот же RTK или Redux с Immer, это удобно, так как избавляет от больших конструкций со спредами, а сигналы ничего не меняют. Это все плохое влияние вьюшников с их proxy и templates :D
В сигналах, к слову, нет Proxy)
Jotai - 1,1 миллиона скачиваний в неделю.
Плюс есть пропоузал о добавлении сигналов в ECMAScript.
Как по мне, реактивность - это будущее и чуть ли не единственно верный способ разработки интерфейсов.
надеюсь все же, что ваше предсказание о реактивном программировании никогда не сбудится)
@@it-sin9k Это почему?)
Не вижу особых проблем с реактивном программированием, по необходимости можно всегда выдернуть иммутабельную копию объекта.
А вот синтаксис удаления элемента из массива в реакте по прежнему выглядит как хтонический ужас, не говоря уж про объекты.
@@notimeforhero У меня был лайфхак на этот счет) Могу скинуть)
10:00 - Интересная инфа.
Никогда бы не подумал, что увижу vue в react.
Ты увидел лишь проксирование (что в принципе и взято за основу в vue), а не vue в react. Тот же immer уже есть везде, rematch, rtk и его можно легко подключить к сырому redux
На сколько знаю, в планах команды по Angular это полный отказ Zone.js в пользу Signals. И уже проделано очень много работы по этому направлению.
В том числе и в взаимодействие rxjs и Signals, например, экспериментальный toSignals(observable)
Интересное видео, но я не пишу на js, а так посмотрел для будущего спасибо)
👍
Все давно было придумано в MobX (как вы упомянули на 5:25), но там было немного другой подход при этом не надо создавать доп ноду value в VDOM.
Доп нода там нужна, чтобы не ререндерить компонент целиком, а менять только места, где используются сигналы. Они создают очень быстрый и легковесный VDOM для отображения value)
былоб интересно попробовать скрестить RJSF с сигналами, при больших формах с кастомными виджетами сигналы должны помочь
Го попробуем)
Парни реально придумали Vue 3 в React и назвали это Signals)
Было время, когда Vue копировал идеи React, но, доводил их до ума. Теперь кажется, будто тенденция идёт наоборот.
Спасибо за видео!
так это же не React команда копирует, это сообщество же)
@@it-sin9k Да, справедливый тейк. Я некорректно сказал.
Просто показалось забавным как это всё выглядит
@@gerda-morozova Многие заметили сходство с Vue) Только вот в Vue это появилось позже, чем в Svelte.
прекрасная штука) уже год всем про неё рассказываю, но внедрить получилось только в одном проекте, а интереса в итоге ноль
а что вас заинтересовало больше всего?
@@it-sin9k Возможность раз и навсегда забыть про повторные рендеры из-за изменения состояния, будь то локальное или внешнее. Без мемо и прочих мемоизаций это выглядит магией) если использовать сигналы хотя бы как альтернативу базовому useState, то уже можно кратно выиграть во всех аспектах уровня производительность/бойлерплейт
Не я один такой, получается)
@@it-sin9k в первую очередь то, что даже если использовать сигналы всего лишь вместо дефолтного useState, то рост производительности будет кратным, при этом о различных способах мемоизации(как и говорилось в видео) можно забыть. Показалось непростительным проходить мимо, с учётом таких вводных)
А зачем эта библиотека, если уже давно есть mobx?
отвечаю, люди не смотрят как что устроены и воспринимают что-то хайповое за новое :/
Мобикс - это стейт интерфейса и его можно использовать, в том числе и с сигналами. react-mobx = это просто сахарок, который оборачивает компомнент в memo и подписывается на события обновления стора.
@@sergeydostovalov6180 что значит "стейт интерфейса"? То что сигналы можно использовать с mobx - без вопросов, правда зачем мешанина эта. Мой посыл в том, что mobx отлично заменяет сигналы и обе библиотеки, по сути, выполняют одну и ту же роль: реактивность + точечный ререндер
const store = observable({
count: 0,
setCount(value) { this.count += value }
})
VS
const count = signal(0);
const setCount = value => count.value = value;
По сути одно и то же получаем
Реакт просто куча каких-то костылей и каждый раз накидывают сверху ещё и ещё 🤦😂
Пока все нормальные фреймворки переходят на актуальные и эффективные концепции, реактоводы продолжают есть кактус и рискуют оказаться в позиции пользователей JQuery
1ый😎
красава!)
Фронтендеры все оборачивают в memo и думают что что-то оптимизируют. Смешно до жути.
Ну все уж не надо. Зависит от ситуации
@@grenadier4702Для хока memo должны совпасть очень многие факторы, в большинстве случаев он не работает, проще меморизировать jsx
А причём тут вообще memo?)
В видео о нём речь не идёт, а сигналы работают по другому принципу.
Это скорее useRef на HTMLElement с подпиской на прокси-объект.
Я всё больше убеждаюсь, что фреймворк в половине случаев вообще не нужен. React отлично справляется, когда нужно быстро создать простой интерфейс, но как только задачи выходят за рамки верстки и базовых кнопок, начинаются сложности. Например, сравните реализацию бесконечного скролла на чистом JavaScript и в React. Разница очевидна: в случае React приходится преодолевать ограничения виртуального DOM, тогда как с использованием ванильного JavaScript таких проблем нет.
В этом смысле мне больше всего нравится Svelte, который предоставляет удобный каркас для построения интерфейсов, но при этом активно поощряет использование ванильного кода. Это позволяет добиться лучшего баланса между удобством разработки и контролем над кодом
Зато в оставшейся половине случаев в случае экспоненциального роста проекта получаешь монстра, которого очень тяжело поддерживать, а тем более пилить новые фичи. В итоге получается что лучше взять заранее полновесный фреймворк и перестраховаться, нежели переписывать всё при внезапном росте приложения.
Имел, к сожалению, печальный опыт поддержки проектов на ванилле, а также написание велосипедов для Preact (вроде SSR или Swiper) вместо использования готового NextJS.
@@notimeforhero В общем, как обычно: есть два стула, а дальше сами знаете...