Как сделать MVC в Вуе? НИКАК
https://t.me/vueist/28
https://t.me/vueist/28
Telegram
Vueist
Как внедрить MVC в мое Vue приложение?
Достаточно часто возникающий запрос в сообществе, поэтому я дам сразу на него ответ: НИКАК. Почему распишу ниже
Время идет и все развивается. Изначально MVC действительно создавался для упрощения создания интерактивных…
Достаточно часто возникающий запрос в сообществе, поэтому я дам сразу на него ответ: НИКАК. Почему распишу ниже
Время идет и все развивается. Изначально MVC действительно создавался для упрощения создания интерактивных…
7–8 апреля Мы - Msk Vue.JS будем на конференции HolyJS. Едем не только слушать доклады и окультуриваться, но и представлять наше сообщество!
Мы развернем на конференции свой стенд с активностями, в которых можно будет выиграть мерч и просто обсудить Вуячные и ДжаваСкриптовые тренды🙃
На Холи мы будем не одни, а целая выставка JS-сообществ.
С какими еще коммьюнити можно будет повзаимодействовать? Узнай на сайте HolyJS.
Кто тоже собирается на Холи? Давайте планировать встречу!
Please open Telegram to view this post
VIEW IN TELEGRAM
HolyJS 2025 Autumn. JavaScript-конференция: от фронтенда до бэкенда
HolyJS 2025 Autumn | JS-конференция: от фронтенда до бэкенда
HolyJS 2025 Autumn — конференция по JavaScript. Десятки технических докладов о JS-разработке для фронтенда, бэкенда, web3 и других сфер. Обсуждения фреймворков и инструментов в атмосфере JS-сообщества!
createSharedComposable
Если бы меня спросили лучшие паттерны для освоения во Vue, я бы точно назвал одним из них shared composable. Почему и что это за фрукт такой?
Происхождение
Первое упоминание о shared composable было в RFC Vue посвященному Effect Scope. И там говорится о примере композабла
Как это работает?
На самом деле весьма не хитрым образом. Оно использует API Effect Scope + счетчик подписчиков, когда подписчиков становится 0 он уничтожает текущий скоуп. Вот и все. А... возможно вам не совсем знакомо что же такое Effect Scope (однажды мой доклад на эту тему уже выложат на YouTube...). А вот поэтому этот паттерн и хорош, он заставляет вас слегка заглянуть поглубже в работу Vue. Я уже приложил ссылку на RFC, где крайне подробно расписано что такое реактивные скоупы и как они работают. Если совсем сократить и упростить, то эффект скоупы это как мешок для реактивности: он запоминает все вызванные
А чем же так крут этот паттерн еще?
1. Учебный эффект позволяющий лучше понять работу Vue
2. Возможность оптимизации как в примере c
3. Он позволяет на SPA приложениях спокойно заменить Pinia или другой STM на себя, так как спокойно выполняет обязанности глобального стейт менеджера, только еще и умеет уничтожаться когда никому не нужен (с pinia я видел как люди вручную это дело пытаются зачищать)
4. Advanced DI. По сути созданный композабл это сервис который может жить внутри
А какие есть минусы?
- Это не самое SSR Friendly решение
- Этого API нет из коробки, поэтому вам придется либо писать его самим, либо взять из vueuse
- Можно при неаккуратном использовании натворить страшных вещей
- Алгоритм использует простой счетчик, поэтому циклическая зависимость приведет к невозможности уничтожения (если не создать ручной "рубильник")
Итого: классный паттерн имеющий крайне широкие возможности с дополнительным эффектом погружения в мир реактивности Vue, однозначно рекомендую к изучению
Если бы меня спросили лучшие паттерны для освоения во Vue, я бы точно назвал одним из них shared composable. Почему и что это за фрукт такой?
Происхождение
Первое упоминание о shared composable было в RFC Vue посвященному Effect Scope. И там говорится о примере композабла
useMouse
который слушает перемещения мышки и возвращает это в виде реактивных переменных координат. И вроде логично, что это не самое легковесное действие. А если это нужно множеству компонентов? Да каждый компонент использующий useMouse
подписывается на него и это становится уже ощутимо. Тогда почему бы просто не вынести в глобальный STM как Pinia? Отличный вариант, но он будет работать даже когда нет никого кому нужны эти данные. И вот тут на помощь приходит shared composable он умеет как STM шарить данные на множество инстансов, но при этом если никто его не использует, то "стор" уничтожается! При этом сам паттерн универсальный и все что вам нужно это обернуть обычный композабл в createSharedComposable
. И да, как только все компоненты использующие useMouse
будут размонтированы shared composable тоже отпишется от событий мышки.Как это работает?
На самом деле весьма не хитрым образом. Оно использует API Effect Scope + счетчик подписчиков, когда подписчиков становится 0 он уничтожает текущий скоуп. Вот и все. А... возможно вам не совсем знакомо что же такое Effect Scope (однажды мой доклад на эту тему уже выложат на YouTube...). А вот поэтому этот паттерн и хорош, он заставляет вас слегка заглянуть поглубже в работу Vue. Я уже приложил ссылку на RFC, где крайне подробно расписано что такое реактивные скоупы и как они работают. Если совсем сократить и упростить, то эффект скоупы это как мешок для реактивности: он запоминает все вызванные
watcher
-ы и уничтожает их в нужный момент (да-да именно так работает setup
в компонентах). А вместо onUnmounted
вы можете использовать onScopeDispose
.А чем же так крут этот паттерн еще?
1. Учебный эффект позволяющий лучше понять работу Vue
2. Возможность оптимизации как в примере c
useMouse
3. Он позволяет на SPA приложениях спокойно заменить Pinia или другой STM на себя, так как спокойно выполняет обязанности глобального стейт менеджера, только еще и умеет уничтожаться когда никому не нужен (с pinia я видел как люди вручную это дело пытаются зачищать)
4. Advanced DI. По сути созданный композабл это сервис который может жить внутри
provide
/ inject
и расшаривать данные и логику как STM, но только на определенной части приложения (я не раз видело как пытаются генерировать это с pinia + id стора
)А какие есть минусы?
- Это не самое SSR Friendly решение
- Этого API нет из коробки, поэтому вам придется либо писать его самим, либо взять из vueuse
- Можно при неаккуратном использовании натворить страшных вещей
- Алгоритм использует простой счетчик, поэтому циклическая зависимость приведет к невозможности уничтожения (если не создать ручной "рубильник")
Итого: классный паттерн имеющий крайне широкие возможности с дополнительным эффектом погружения в мир реактивности Vue, однозначно рекомендую к изучению
Кстати, кстати, кстати!
7-8 апреля будет HolyJS, и я там тоже буду с ребятами из MSK VUE.JS
Так что приходите, будем болтать, обсуждать вуй и душнить😘 💪
7-8 апреля будет HolyJS, и я там тоже буду с ребятами из MSK VUE.JS
Так что приходите, будем болтать, обсуждать вуй и душнить
Please open Telegram to view this post
VIEW IN TELEGRAM
Дождался. Доклад по Шестеренкам реактивности Vue наконец-то вышел. В нем были разобраны базовые механизмы на которых основана работа реактивности во Vue.
- Ссылка на презентацию
- Ссылка на карту реактивности
И так полезный сопровождающий материал:
- Chibivue [Ru]
- Курс от Michael Thiessen
- Ссылка на презентацию
- Ссылка на карту реактивности
И так полезный сопровождающий материал:
- Chibivue [Ru]
- Курс от Michael Thiessen
YouTube
Денис Чернов — Шестеренки реактивности Vue
Подробнее о конференции HolyJS: https://jrg.su/EM4wwV
— —
Мы любим Vue за простоту и скорость разработки на нем. Но часто говорят, что в нем много магии и подкапотной работы. Однако ощущение магии развеивается, если разобраться, как работают все шестеренки…
— —
Мы любим Vue за простоту и скорость разработки на нем. Но часто говорят, что в нем много магии и подкапотной работы. Однако ощущение магии развеивается, если разобраться, как работают все шестеренки…
Тут короче сказали, мол, а мы и старого автора то не знали, капецъ
Надо исправлять, меня зовут Владимир Бандуристов, я тимлидю фронтенд/вуй в билайне и вот уже кажется 3 года веду этот канал, приятно познакомиться =)
Ещё я люблю ваху, у меня есть замечательная собака породы бордер-колли (кстати я написал базу данных этой породы https://bc-db.ru/) и огромное желание нести вуй в массы💪
Надо исправлять, меня зовут Владимир Бандуристов, я тимлидю фронтенд/вуй в билайне и вот уже кажется 3 года веду этот канал, приятно познакомиться =)
Ещё я люблю ваху, у меня есть замечательная собака породы бордер-колли (кстати я написал базу данных этой породы https://bc-db.ru/) и огромное желание нести вуй в массы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Очередные фреймворковые войны эти вот на хабре
https://habr.com/ru/articles/892406/
https://habr.com/ru/articles/892406/
Хабр
Прожариваем React
Привет, Хабр! Я уже рассказал, что умею разнообразно писать счётчики. Пришло время сделать шаг вперёд! Сегодня поговорим о том инструменте, который я и миллионы разработчиков используют ежедневно....
👌1
Короче у нас на стенде на Холи была активность в виде Дженги, на каждой палочке которой был написан вопрос по Вую или ТСу.
Тащишь, отвечаешь, следующий.
Вопросы были довольно разные, и естественно не каждый разработчик с другого фреймворка или библиотеки мог ответить на вопросы по Вую, поэтому мы рассказывали про устройство Вуя и как работает та или иная фича.
НО! Я был удивлен реакции многих фронтов с реакта, когда они такие "Да ладно! Не может так просто это работать, мне вот говорили что во Вью всё запутано, блин пойду почитаю, ого, какая дока крутая, у нас в реакте такого нет"
Не хватает конечно у Вуя освещенности среди разработчиков на других фреймворках видимо
Тащишь, отвечаешь, следующий.
Вопросы были довольно разные, и естественно не каждый разработчик с другого фреймворка или библиотеки мог ответить на вопросы по Вую, поэтому мы рассказывали про устройство Вуя и как работает та или иная фича.
НО! Я был удивлен реакции многих фронтов с реакта, когда они такие "Да ладно! Не может так просто это работать, мне вот говорили что во Вью всё запутано, блин пойду почитаю, ого, какая дока крутая, у нас в реакте такого нет"
Не хватает конечно у Вуя освещенности среди разработчиков на других фреймворках видимо
👌2
А ещё, мне стало оооооооочень интересно узнать как устроена внутренняя кухня Вуя в Озоне когда я услышал "Ну у нас нельзя читать офф доку, потому что у нас есть конвенция, в которой как бы и есть дока, но только то, что можно использовать, поэтому про половину Вуя мы и не знаем" ❓
Типа как так то?
Типа как так то?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯4👌1
В общем телега снесла канал, так что пришлось всеми возможными силами восстанавливать как смог. Зовите друзей Вуюшников, переманивайте Реактеров, уговаривайте Ангулярщиков и приглашайте Свелтистов 😁
Давайте снова вместе вдохнём жизнь в это сообщество💚
https://t.me/stuffy_vuejs
Давайте снова вместе вдохнём жизнь в это сообщество
https://t.me/stuffy_vuejs
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Душный Вуй
Немного душные, но ламповые заметки о Vue.js
#vuejs #vue #nuxt #vuex #pinia #вью #vapor
#vuejs #vue #nuxt #vuex #pinia #вью #vapor
❤12👌1
Душный Вуй pinned «В общем телега снесла канал, так что пришлось всеми возможными силами восстанавливать как смог. Зовите друзей Вуюшников, переманивайте Реактеров, уговаривайте Ангулярщиков и приглашайте Свелтистов 😁 Давайте снова вместе вдохнём жизнь в это сообщество 💚 …»
#vue
Кстати одним из вопросов в дженге было "Чем отличается watch от watchEffect", и почему-то мало людей отвечало на него, даже среди разработчиков на Вуе, так что давайте немного теории:
watch
Это такой наблюдатель который позволяет следить за чем либо, и выполнять нужные действия когда вот это первое поменяется, ну например:
Какие у него есть нюансы?
— Надо явно указать за чем ты хочешь следить
— Он начинает следить только при первом изменении переменной, если ты ему не укажешь
— Могёт тебе показать как старое значение, так и новое
— Есть разные настройки, типа того же
Причем, так то в watch тоже можно следить на несколькими элементами вот так
watchEffect
Тоже наблюдатель, вот только он умеет следить сразу за несколькими переменными вот так:
Шо по нюансам?
— Не надо первым аргументом передавать то, за чем ты хочешь следить
— Он прям сразу следит за всем (не нужно указывать
— Он не покажет тебе старое и новое значение
— Подойдёт когда тебе нужно следить сразу за несколькими переменными
— Тоже есть интересные настройки типа
— Для отладки кстати можно заюзать
Ну и читаем доку конечно жи:
EN: https://vuejs.org/guide/essentials/watchers.html
RU: https://ru.vuejs.org/guide/essentials/watchers
Кстати одним из вопросов в дженге было "Чем отличается watch от watchEffect", и почему-то мало людей отвечало на него, даже среди разработчиков на Вуе, так что давайте немного теории:
watch
Это такой наблюдатель который позволяет следить за чем либо, и выполнять нужные действия когда вот это первое поменяется, ну например:
import { ref, watch } from 'vue';
const count = ref(0);
watch(count, (newValue, oldValue) => {
console.log(`count изменился с ${oldValue} на ${newValue}`);
});
count.value = 1; // Вывод: "count изменился с 0 на 1"
Какие у него есть нюансы?
— Надо явно указать за чем ты хочешь следить
— Он начинает следить только при первом изменении переменной, если ты ему не укажешь
immediate: true
— Могёт тебе показать как старое значение, так и новое
— Есть разные настройки, типа того же
immediate
, или например возможность указать когда именно должен работать watch, до рендеринга, или послеПричем, так то в watch тоже можно следить на несколькими элементами вот так
watch([count, name], ([newCount, newName], [oldCount, oldName]) => {
console.log(`Count: ${newCount}, Name: ${newName}`);
console.log(`Было: Count: ${oldCount}, Name: ${oldName}`);
});
watchEffect
Тоже наблюдатель, вот только он умеет следить сразу за несколькими переменными вот так:
import { ref, watchEffect } from 'vue';
const count = ref(0);
const multiplier = ref(2);
watchEffect(() => {
console.log(`Результат: ${count.value * multiplier.value}`);
});
// Вывод при инициализации: "Результат: 0"
count.value = 1; // Вывод: "Результат: 2"
multiplier.value = 3; // Вывод: "Результат: 3"
Шо по нюансам?
— Не надо первым аргументом передавать то, за чем ты хочешь следить
— Он прям сразу следит за всем (не нужно указывать
immediate
).— Он не покажет тебе старое и новое значение
— Подойдёт когда тебе нужно следить сразу за несколькими переменными
— Тоже есть интересные настройки типа
flush
для определения когда именно он должен работать— Для отладки кстати можно заюзать
onTrack
и onTrigger
Ну и читаем доку конечно жи:
EN: https://vuejs.org/guide/essentials/watchers.html
RU: https://ru.vuejs.org/guide/essentials/watchers
👍27❤1
Спасибо огромное ребятам из Msk Vue.js, каналу Vueist (Денису Чернову) и всем-всем кто помогал восстановить канал после удаления, вы лучшие! ❤️
❤54🔥9👌4👍2😁2
Forwarded from MSK VUE.JS News
Команда оргов Msk Vue.js легендарно ворвалась на весенний Holy.js ❤️
Мы ломали шаблоны, стереотипы, убеждения реактщиков и дженгу 😅 особо удачливые даже забрали супер эксклюзивный хэндмейд сувенир от нас😂
Было очень классно со всеми увидеться, пообщаться в живую, разогнать за вуй и просто побыть в тусовке!
Скоро увидимся еще) следите за обновлениями в чатике❤️
P.S. Найди ЛЕГЕНДУ на фото🙃
Мы ломали шаблоны, стереотипы, убеждения реактщиков и дженгу 😅 особо удачливые даже забрали супер эксклюзивный хэндмейд сувенир от нас😂
Было очень классно со всеми увидеться, пообщаться в живую, разогнать за вуй и просто побыть в тусовке!
Скоро увидимся еще) следите за обновлениями в чатике❤️
P.S. Найди ЛЕГЕНДУ на фото🙃
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍7🥰5🫡1
Шо, забирайте свеженький стикерпак про вуй)
Если будут идеи для новых стикеров, пишите в комменты 🙏
Может быть на ближайший митап притащу стикерочков
Если будут идеи для новых стикеров, пишите в комменты 🙏
Может быть на ближайший митап притащу стикерочков
🔥12👍1