169 похожих чатов

Реакт... С jsx можно смириться, даже воспринимаешь его как нечто удобное...

проблемы вроде замен атрибутов class= -> className= и for= -> htmlFor= вполне решаются регулярками... Хотя что со вью, что со свелт мне удалось просто научить верстальщика верстать сразу в компоненты, а с jsx это вызывает кучу проблем...
Больших преимуществ над ванила DOM вообще не вижу, да можно выплюнуть пачку vDOM и реакт все сам как то разрулит, но на деле борешься с тормозами из-за лишними перерендерами на каждый чих.
Ну и вот вроде простое - друг хорошего, и подход все есть пропсы (они заменяют и слоты, и события и еще кучу вещей), да только апдейт пропсов это опять тупой ререндер...

вью...
после реакта с его отвратительным DX оно реально как глоток свежего воздуха, но...
до недавнего времени было 2 типа слотов (scoped и не scoped), сейчас по сути объединили все как scoped, но старый код никуда не денешь.
сильная завязаность на свою инфраструктуру (vuex, vue-roater и т.д.), прикрутить что-то стороннее - боль и костыли
vuex - это отдельная песня, начиная с того, что бизнес логика не типизируется (typescript? можешь выкинуть если в проекте есть vuex, один фиг все скатится в any), а ведь это место где по идее должны быть бизнес логика
Система реактивности иногда преподносит неприятные сюрпризы. Начиная от своей непредсказуемости (можно писать так: this.field = value если field уже в системе реактивности, но если его там нет, то нужно писать Vue.set(this, 'field', value), хотя не всегда, есть кейсы где вью все таки сообразит, что ты от него хочешь), ну и если у тебя v-for который рендерит много чего нибудь из vuex, что меняется со временем (в частности удаляется из массива), то ты попал, тормоза не вылечить ничем, потому что отписка от ненужных зависимостей под капотом у вью выглядит примерно так:
for(const dep of depsForRemove) {
const i = allDeps.indexOf(dep);
if(i !== -1) allDeps.splice(i, 1);
}
Сами подумайте, какие могут быть тормоза, если массив из 200 элементов запросто генерит 80к подписок к vuex

svelte
главная претензия - сыроват, встречаются досадные баги... Сильно заметно, что его тестят только в продакшн компиляции и без ts... Ибо больше всего у меня проблем было именно с типами и с дев компиляцией...
и да, в сами компоненты ts не затащить никак, но вокруг прекрасно живет код на ts и это даже способствует делать UI слой тоньше
сторы - как по мне это вообще киллер фича свелта. Они гибки и изящны и в то же время весьма просты. А главное - это интерфейс, под который еще и rxjs почти подходит (если 1 next выдать в поток синхронно, то проблем нет, иначе чекай, что subscribe колбэк не был вызван). После них redux примитивен, mobx сильно замудрен и "magic", а vuex ущербен и избыточен
ну и вторая киллер фича как по мне - use:function - больше не надо парится, что ref может быть не отрендерен в определенные моменты времени, а значит можно сосредоточится на задаче, а не на борьбе с фреймворком и отслеживанием во-сколько v-if завернут твой ref

2 ответов

10 просмотров

С хуками в реакте все покрасивше сейчас все-же)

Добавлю, что если свелтовских сторов недостаточно, то сверху идеально ложится effector

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта