Порция RFC
Видимо под влиянием анонса Solid 2 один из членов кор тимы vue (ubugeeei) решил накидать своего вижена какие фичи неплохо было бы видеть во vue дальше
1. RFC: Composed Async
текущий Suspense завис в эксперементале на долгие годы. И по факту он прижился только в кишках Nuxt остальным же он оказался мало полезен (у Vue сейчас есть поддержка асинхронного setup (который отрабатывает лишь 1 раз) но нет асинхронного рендера). Этот rfc значительно расширяет возможности для асинхронности во Vue. Добавляя явный async аттрибут компонентам, своеобразный async для директив v-defer и дополнительная фича для Suspense.
Мне лично не совсем нравится вот эта гонка за асинхронностью во фреймворках, она создает достаточно много ментальной сложности Но реального применения у этого меньше бы чем хотелось. Был бы больше рад условному resource паттерну из коробки.
2. Паттерн-матчинг в шаблонах (само описание)
Предлагает вместо использования цепочек v-if/v-else-if сделать РАЗНОУРОВНЕВЫЙ v-match + v-case
Мы видим, что v-match на уровень выше чем v-case что должно способствовать читабельности. Ключевые слова и конечный синтаксис под вопросом.
Тут мне не сильно важно. как фича интересно, но и без нее ОК
3. Вложенные компоненты (описание)
Воистину самое спорное и холиварное из решений, Позволить внутри SFC создавать новые компоненты.
import { ref } from 'vue'
const count = ref(0)
increment
const { count } = defineProps()
Current count: ` count `
Ключевой момент, что это полноценный изолированный компонент(не как snippet из Svelte или createReusableComponent), но приватный для текущего (возможность явно указать export под вопросом). С одной стороны фича интересная, с другой будет способствовать файлам переросткам. Нужно будет большая дисциплина чтобы следить за таким.
4. Server-Side Props
А вот это апи крайн сомнительно. Не думаю что оно должно дойти до нас
Если кратко: defineServerSideProps позволяет указать зависимости от сервера асинхронной функцией (крайне схоже с asyncData из nuxt) и возможность указать server компоненты которые не должны никак попасть на клиент. Это вообще не про server component из React. а скорее попытка сделать стандартизированный подход и вырезание чувствительных данных и гарантия непопадания их на клиент
5. Props Variance
А вот это то чего так многие ждали: возможность отключать рантайм проверку пропсов. Опция nonValidatedProps позволит это включать. Те если раньше компилятор генерировал из TS типа рантайм пропсы для валидации, то такая фича позволяет типу остаться просто типом. Но тогда возникает вопрос как поступать с аттрибутами. И вот тут уже главные обсуждения данного rfc
Это достаточно краткий обзор на каждую из RFC и в действительности они заслуживают более глубокого анализа. Также напомню. что RFC вовсе не гарантирует попадание его в реаольность и скорее повод обсудить перед действиями. Поэтому если у вас есть стойкое мнение о них. то вы можете отписаться в RFC и сделать свой вклад в развитие Vue.
PS. Более подробно об изменениях Solid 2 и RFC во Vue буду обсуждать сегодня twitch / youtube буквально через час
Видимо под влиянием анонса Solid 2 один из членов кор тимы vue (ubugeeei) решил накидать своего вижена какие фичи неплохо было бы видеть во vue дальше
1. RFC: Composed Async
текущий Suspense завис в эксперементале на долгие годы. И по факту он прижился только в кишках Nuxt остальным же он оказался мало полезен (у Vue сейчас есть поддержка асинхронного setup (который отрабатывает лишь 1 раз) но нет асинхронного рендера). Этот rfc значительно расширяет возможности для асинхронности во Vue. Добавляя явный async аттрибут компонентам, своеобразный async для директив v-defer и дополнительная фича для Suspense.
Мне лично не совсем нравится вот эта гонка за асинхронностью во фреймворках, она создает достаточно много ментальной сложности Но реального применения у этого меньше бы чем хотелось. Был бы больше рад условному resource паттерну из коробки.
2. Паттерн-матчинг в шаблонах (само описание)
Предлагает вместо использования цепочек v-if/v-else-if сделать РАЗНОУРОВНЕВЫЙ v-match + v-case
Мы видим, что v-match на уровень выше чем v-case что должно способствовать читабельности. Ключевые слова и конечный синтаксис под вопросом.
Тут мне не сильно важно. как фича интересно, но и без нее ОК
3. Вложенные компоненты (описание)
Воистину самое спорное и холиварное из решений, Позволить внутри SFC создавать новые компоненты.
import { ref } from 'vue'
const count = ref(0)
increment
const { count } = defineProps()
Current count: ` count `
Ключевой момент, что это полноценный изолированный компонент(не как snippet из Svelte или createReusableComponent), но приватный для текущего (возможность явно указать export под вопросом). С одной стороны фича интересная, с другой будет способствовать файлам переросткам. Нужно будет большая дисциплина чтобы следить за таким.
4. Server-Side Props
А вот это апи крайн сомнительно. Не думаю что оно должно дойти до нас
Если кратко: defineServerSideProps позволяет указать зависимости от сервера асинхронной функцией (крайне схоже с asyncData из nuxt) и возможность указать server компоненты которые не должны никак попасть на клиент. Это вообще не про server component из React. а скорее попытка сделать стандартизированный подход и вырезание чувствительных данных и гарантия непопадания их на клиент
5. Props Variance
А вот это то чего так многие ждали: возможность отключать рантайм проверку пропсов. Опция nonValidatedProps позволит это включать. Те если раньше компилятор генерировал из TS типа рантайм пропсы для валидации, то такая фича позволяет типу остаться просто типом. Но тогда возникает вопрос как поступать с аттрибутами. И вот тут уже главные обсуждения данного rfc
Это достаточно краткий обзор на каждую из RFC и в действительности они заслуживают более глубокого анализа. Также напомню. что RFC вовсе не гарантирует попадание его в реаольность и скорее повод обсудить перед действиями. Поэтому если у вас есть стойкое мнение о них. то вы можете отписаться в RFC и сделать свой вклад в развитие Vue.
PS. Более подробно об изменениях Solid 2 и RFC во Vue буду обсуждать сегодня twitch / youtube буквально через час