@jsunderhood @xnimorz @hh_ru А можно подробнее об опыте на svelte ? Сколько уже натыкаюсь на стоить на хабре про него. но что-то внутри отказывается воспринимать его как что-то серьёзное
Да, конечно. Сразу предупреждаю — опыт не production, личный.
По svelte у меня есть один проект на github — маски ввода: github.com/xnimorz/svelte….
Они мне нужны были, потому что у меня есть маленькая цель: сделать приложение комбайнер для домашних финансов. twitter.com/DonnaInsolita/…
Учет финансов, синхронизация между всеми членами семьи, разделение прав и многое-многое другое.
Я периодически делаю заходы на это приложение и в какой-то момент дошел до рабочего прототипа на реакте, которым пользовался почти год. Там не было шаринга.
В какой-то момент, я проникся svelte и появилось желание разобраться, насколько он удобен, можно ли им пользоваться. Первые ощущения были: вау-вау, круто-круто, мне кажется, у многих подобное было, когда переходили с условного бекбона на реакт.
А потом при том же переходе на реакт появлялись боли: тут нужно PureComponent, там отписку правильную сделать, здесь в ref null может прийти, с хуками тоже были боли, например, useCallback и useMemo когда использовать?
Немного по-другому у меня сложилась история со svelte.
Про плюсы svelte тут уже писали и мне лично svelte очень по душе. Но я расскажу про неприятные вещи с которыми столкнулся. Это не фатальные минусы, это то, от чего страдает DX.
Нестабильность API. Я разрабатывал на 3.12.1, а демку делал на другой версии (ниже). У меня в итоге сломался
bind:this
. Описание ошибки не нашел в истории браузера, но выглядела она как internal_somevar is not defined. Что усложнило поиск и пришлось лезть в код svelteВам часто нужно будет разбираться в коде, который сгенерировал svelte. Особенно если вы делаете большое приложение. Когда делаете небольшой компонент или виджет — все сильно проще. Плюсом будет то, что код генерируется достаточно простой (обычно)
Если вам нужно прокинуть класс, вам придется объявить его как :global(класс) codesandbox.io/s/svelte-input… (вот здесь в App.svelte пример).
Если вы делаете утилитарный компонент и вы хотите прокинуть все props в обычный элемент (например aria атрибуты или еще что-то), вам придется делать деоптимизацию обращаясь к $$props.
Еще неудобство вот github.com/sveltejs/svelt…
Иногда вы зависите от порядка переменных: github.com/sveltejs/svelt…
Это те боли, которые у меня возникли за последние примерно 2 месяца.