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

Какие существенные минусы у свелте?

55 ответов

83 просмотра

Пишите так, если хотите позвать Александра

1. В некоторых кейсах(вероятнее всего ынтырпрайзных) больше бандл https://github.com/halfnelson/svelte-it-will-scale 2. Многим не нравится отсутствие возможности передачи классов(вместе с стилями прописанными в родителе) компонентам. Плюс :global не каждому по душе. 3. Еще не 100% стабильная реактивность. В редких кейсах дичь творит. 4. Нету svelte:element, хотя уже давно в роадмапе. 5. Мало готовых компонентов, относительно реакта и прочих. 6. Почти нет работы на площадках, хотя на фриланс успешно внедряю =) 7. Плагины добавляют поддержку в третью очередь после реакта.

Дима
Спасибо большое!

если еще не смотрел мой доклад про то как работает свелт под капотом, рекомендую: https://t.me/sveltejs_public/186

Дима- Автор вопроса

Видел сравнение свелта с преактом. На большом проекте у свелта бандл выходил немножко больше. Впрочем, это довольно сомнительный минус

Дима- Автор вопроса
Alexander
Видел сравнение свелта с преактом. На большом прое...

Да это пофиг, вес фреймворка на большом проекте играет малую роль по сравнении с весом всего приложения

Дима
Да это пофиг, вес фреймворка на большом проекте иг...

Ну свелт же не идёт на фронт, только бандл идёт

Alexander
Видел сравнение свелта с преактом. На большом прое...

Кстати, вот оно https://medium.com/@chrisdaviesgeek/tiny-js-frameworks-preact-and-svelte-d2388e2f8994

Mark Tanashchuk 🇺🇦
1. В некоторых кейсах(вероятнее всего ынтырпрайзны...

А что тут значит второй пункт? Не совсем понятен

Alexander
А что тут значит второй пункт? Не совсем понятен

// Parent.svelte <Child class="margin-right" /> <style> .margin-right { margin-right: 20px } </style> // Child.svelte <div class="margin-right">Margin there</div> Грубо говоря так

Mark Tanashchuk 🇺🇦
// Parent.svelte <Child class="margin-right" /> ...

По идее, его можно передать как обычный пропс?

Дима
Да это пофиг, вес фреймворка на большом проекте иг...

тогда плюсы свелта в большом проекте становятся вообще незначительными =)

Mark Tanashchuk 🇺🇦
А сравнение цпу и оперативной памяти?

оперативная память давно не роскошь, только на тв. цпу не знаю, не таргетируюсь на девайсы со слабым цпу, остальные девайсы справляются

Alexander Ponomarev
оперативная память давно не роскошь, только на тв....

Писал веб интерфейсы для планшетов(амазоновские киндлы) и свелт отлично себя показал, а вью пожирнее был бы уверен и с ним было бы больше мороки.

Mark Tanashchuk 🇺🇦
Писал веб интерфейсы для планшетов(амазоновские ки...

подравляю тебя, ты ничего не сравнивал и сделал выводы так держать =)

Alexander Ponomarev
подравляю тебя, ты ничего не сравнивал и сделал вы...

У меня простой хорошо написанный лендинг на вью сжирает столько же, сколько интерфейс с полнотекстовым поиском по 15мб json файлу. Достаточно четкое сравнение?

Alexander
Ну свелт же не идёт на фронт, только бандл идёт

интересно что такое фронт, если не бандл, и что вообще имеется в виду

Дима- Автор вопроса
Alexander Ponomarev
тогда плюсы свелта в большом проекте становятся во...

ну и разве это проблема?) В реакте если нет норм мидла совсем беспорядок в проекте (особенно после хуков). Ну и глобальные редакс. На больших проектах либо нужны прямые руки либо ангуляр)

Дима- Автор вопроса
Valexr
2016 это не серьёзно...

Тогда ещё и терсера не было и преакт был другим кстати

добавлю, что ещё: - нет нормального эвент-форвардинга (например, on:*), - компонент и элемент различаются настолько сильно, что часто приходится придумывать workaround'ы, делать самоповторы в коде и тп (например, давно могли сделать экшены для компонентов, это возможно, но их нет); - нет единого стандарта разработки компонентов, поэтому мы сталкиваемся с таким дерьмом как свелтстрап и другие компоненты, которые вообще не форвардят события или форвардят не те, которые нужны; - нет нормальной человеческой обработки ошибок, часто когда что-то свалится, не понимаешь, где искать и в чём дело, а главное - не можешь предсказать; - нет таких вещей как ErrorBoundary, поэтому если у тебя вдруг что-то свалится в компонентах, у тебя упадёт вообще всё СПА-приложение; - свелт часто не понимает, где у него компонент, где элемент, хотя это следствие проблем выше (например, ты забыл импортировать <Option> и используешь как компонент в разметке, свелт 1) не отругается на отсутствующий импорт; 2) не использует это как элемент, что корректно; 3) выдаст такую ошибку, по которой ты не поймёшь, что ругается именно на отсутствующий импорт ); - сторы определяются только на верхнем уровне, нельзя стор прокинуть через слот и там же использовать (let:store —> $store); - своенравные и упёртые мейнтейнеры - иногда это хорошо, но чаще это дичь, потому что делают сферических коней в вакууме без привязки к жизни (см. Issues на гитхабе); - ещё оч много проблем. Несмотря на это свелт уже (или пока ещё) хорош. Я делаю на нём энтерпрайз уже несколько месяцев, иногда это кровь и боль, притом которой легко можно было избежать малыми стараниями разрабов свелт.

Константин
добавлю, что ещё: - нет нормального эвент-форварди...

да, экшны для компонентов было бы круто, непонятно только на какой элемент их вешать внутри компонента если их несколько, на все? какой сейчас на эту тему воркараунд? пропсом передавать?

Mike Golod
да, экшны для компонентов было бы круто, непонятно...

Зачем их вешать на элементы? У компонента есть лайфсайкл

Mike Golod
да, экшны для компонентов было бы круто, непонятно...

ну типа экшены это как рефы в реакте, почти 1 в 1. Наверно надо в экшен не ссылку на дом элемент передавать а что-то другое если оно висит на компоненте=)

Alexander Ponomarev
а что? =)

Лол, ты серьезно?

Константин
Лол, ты серьезно?

реф колбэк почти один в один

Константин
Зачем их вешать на элементы? У компонента есть лай...

а какой твой юскейс по экшенам на компонентах?

Alexander Ponomarev
а какой твой юскейс по экшенам на компонентах?

не помню уже. Что-то нужно было запускать по апдейту и дестрою вроде

Константин
не помню уже. Что-то нужно было запускать по апдей...

да, единственное отличие от рефколбэка в реакте что есть возможность автовызова на апдейт. А так что там что тут дом ноду\инстанс получаешь =)

Alexander Ponomarev
да, единственное отличие от рефколбэка в реакте чт...

это скорее побочная фича экшна, а не основная. Ссылку ты через this получить можешь

Константин
это скорее побочная фича экшна, а не основная. Ссы...

А что вы хотите делать с экшеном на компоненте вообще? У вас есть юзкейс или это всё умозрительная фича? Экшены замысливались как reusable способ делать логику над дом-узлами. Условные примеры: установить CSS-переменные, фокуснуть элемент, повесить бинд на шорткат и пр. Их можно самому и без use директивы сделать за 10 строк, это чисто сахарная фича.

Daniil Kozlov
А что вы хотите делать с экшеном на компоненте воо...

так и есть, только тебе придется это делать в onMount и onUpdate и проверять что дочерний компонент уже замаунтился, потому что он может маунтиться по условию

Alexander Ponomarev
так и есть, только тебе придется это делать в onMo...

Да. Поэтому и спасибо им, что сделали этот сахар. Он хороший и полезный :)

Daniil Kozlov
Да. Поэтому и спасибо им, что сделали этот сахар. ...

Он может быть полезным и для компонента. В целом если уже есть bind:this то экшен можно собрать руками из этого и onMount, afterUpdate, onDestroy

Alexander Ponomarev
Он может быть полезным и для компонента. В целом е...

Так что именно-то хочется делать? Кросс-компонентная коммуникация, типа вызова функции на детях?

Daniil Kozlov
Так что именно-то хочется делать? Кросс-компонентн...

да, например начальный подскролл вирутального списка к конкретному элементу или просто императивный скролл виртуального списка к конкретному элементу.

Alexander Ponomarev
да, например начальный подскролл вирутального спис...

Ну вот. Тут просто и возникает такая проблема, что скорее всего введение экшенов (которые, еще раз, дают императивный и реактивный доступ к ДОМу по своей изначальной затее) для компонентов не сэкономит никакого кода, и всё это можно решать едва ли не меньшими запарами имея существующие инструменты. Подскролл решается пропсами и биндами. Императивный скролл — биндом на export let функцию, и вся реактивщина останется у вас в родительском компоненте, а не во внешнем экшене. Ну и по понятным причинам оно не даст вам реюзабельности, потому что все компоненты разные. Так что хз.

Daniil Kozlov
Ну вот. Тут просто и возникает такая проблема, что...

ну дом элемнты тоже в каком то смысле все разные, но реализуют некоторые общие интерфейсы типа эвент таргета =) С утверждением что они не сэкономят кода я скорее не согласен

Alexander Ponomarev
ну дом элемнты тоже в каком то смысле все разные, ...

Ага, чего не скажешь о компонентах как раз.

Daniil Kozlov
Ага, чего не скажешь о компонентах как раз.

ну компоненты ты сам пишешь, а с типизацией соответствие интерфейса легко проверять и ловить ошибки

Alexander
Кстати, вот оно https://medium.com/@chrisdaviesgee...

гыг, оказвается что есть более упоротые люди чем я)))))

Alexander Ponomarev
оперативная память давно не роскошь, только на тв....

не только на ТВ, еще носимая электроника и вообще IoT. Вообще когда читаешь такое от разработчиков, сразу понятно почему браузеры с каждым годом выжирают все больше оперативы.

Pavel 🦇 Malyshev
не только на ТВ, еще носимая электроника и вообще ...

Мое мнение таково - есть те кто пишет код, а есть те кто делает продукт. Это вообще разные майндсеты разработчиков

Igor Filippov
Мое мнение таково - есть те кто пишет код, а есть ...

если я правильно понял, это еще называется разработчик/инженер vs коддер

Mike Golod
да, экшны для компонентов было бы круто, непонятно...

экшены для компонентов не имеют смысла. экшн - это life-cycle для DOM элемента. у компонентов уже есть свой life-cycle.

Alexander Ponomarev
ну типа экшены это как рефы в реакте, почти 1 в 1....

нет, рефы есть отдельно с помощью bind:this. смысл экшенов в том, что их можно вынести в переиспользуемый юнит

Pavel 🦇 Malyshev
экшены для компонентов не имеют смысла. экшн - это...

Это бесспорно, только вот у меня есть враппер для инпута, со своими шахматами и балеринами, инпут стоит в форме (их несколько), хочу фокуснуть первый, мои действия?

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта