Email or username:

Password:

Forgot your password?
Андрей Ситник

Перевёл свою читалку со Svelte 4 на предрелиз Svelte 5. Очень понравилось!

1. Размер JS-бандла уменьшился на 30%.
2. Руны позволяют задавать очень хитрые типы.
3. Snippet гораздо гибче, чем slot.

github.com/hplush/slowreader/p

Руководство по переходу:
svelte-5-preview.vercel.app/do

5 comments
Анатолий Богомолов

@sitnik_ru мне в svelte 5 не очень понравилась $props руна. На мой взгляд это даунгрейд. Если в svelte 4 я вместе с обозначением писал и тип, то теперь мне нужно отдельно написать тип и потом ещё реализацию. В итоге получается уродство как на скрине. Причём каких-то преимуществ я не заметил.

И $effect руне не хватает возможности ручного управления зависимостями. Магия это конечно круто, но, например, она не может вызвать функцию при изменении значения в кастомном стейте. Причём, если использовать $inspect, то svelte обновление перехватывает. Очень странное поведение.

В остальном и вправду классно. $state сильно упрощает жизнь.

@sitnik_ru мне в svelte 5 не очень понравилась $props руна. На мой взгляд это даунгрейд. Если в svelte 4 я вместе с обозначением писал и тип, то теперь мне нужно отдельно написать тип и потом ещё реализацию. В итоге получается уродство как на скрине. Причём каких-то преимуществ я не заметил.

И $effect руне не хватает возможности ручного управления зависимостями. Магия это конечно круто, но, например, она не может вызвать функцию при изменении значения в кастомном стейте. Причём, если использовать...

Ваня

@sitnik_ru мне как-то defineProps из vue чисто визуально больше нравятся. Generic для меня видится более обычным подходом чем декларация типа и потом подгонка как на скрине. Может в просто не знаю каких-то деталей и этот поход позволяет что-то, что не позволяется в generic подходе?

Ramil Karimov

@sitnik_ru мне в целом нравятся и руны и снипеты, снипеты правда мощнее. Но у меня ощущение что должны быть инлайн-компоненты вместо них. Снипеты делают то же самое, что компоненты с небольшими оговорками, но для них завели отдельную сущность и они не взаимозаменяемы.

Андрей Ситник

@ramilkos я тоже так думал, пока не увидел как снипеты заменяют <slot> и тут я понял идею.

Ну и инлайн компоненты всё-таки многосложнее получаются — часто надо кидать вещи через props (в Реакте как минимум), а снипет на практике довольно удобен для переимпользования кусков.

Ramil Karimov

@sitnik_ru ну в целом да, они неплохие. Просто хочется паритета по возможностям и взаимозаменяемости. Мне кажется придут к этому.

Go Up