Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
1166 - Telegram Web
Telegram Web
Media is too big
VIEW IN TELEGRAM
На прошлой неделе прошла конференция Vuejs Amsterdam 2025

Полное видео здесь

Яндексом перевел выступление Эвана. Немного коряво вышло.

#vuejs #conf #evanyou
👍5🔥1🌭1🤝1
Опубликовали результаты опроса State of Vue.js 2025

Довольно много информации, надо самому смотреть

Удивили данные по "custom composables" aka "модульные / глобальные рефы" - занимают уже половину от рынка Pinia. Народ умнеет.

#stats
👍5👎2🤡2🤬1
Я писал не так давно про MCP и их потенциально большую роль в будущем, и тут вот уже что появилось:

vite-plugin-vue-mcp

MCP сервер в форме Vite плагина, который позволяет AI агенту IDE запрашивать данные о твоем Vue проекте

Грубо говоря, если агенту понадобится информация о роутах проекта, он не будет ползать по всей твоей кодовой базе, парся файлы, а получит информацию сразу в структурированном виде. Что намного быстрей и эффективней.

Полезность конкретно этой штуки нуждается, конечно, в проверке, но начало положено.

#ai
👍2
Совсем недавно вышла Mistral OCR - первая LLM для качественного парсинга картинок и pdf с картинками

Подключил её в Lissa.

Отлично распознает. Бесплатно. Без лимитов. С санкционной территории работает. Где подстава пока не пойму...

Мучения с Tesseract и Ко закончились, хотя оставил их на фолбэк.

#ocr #ai
Кто не знал, есть в VS Code (Volar) такая команда

Разделяет на два окна один файл по секциям SFC

#vscode
👍18🔥52
Деривативом к Lissa Health создался телеграмный ботик для AI распознавания текста на фото и картинках

@argus_ocr_bot

Позволяет задать один уточняющий вопрос после распознавания для фильтрации данных, форматирования, перевода на другой язык или еще чего-то

Примеры:
1. Сфотографировать квитанцию СДЭК => Оставь только номер отправления
2. Сфотографировать визитку => Сделай json
3. Сфотографировать непонятный текст => Переведи на русский

Критика и предложения welcome

#lissa #tgbot #argus
🔥8
Хех... Эван прочел этот пост, но один "meta" все же лишний

Иначе Laravel - это мета-фреймворк над Symfony

#vite #evanyou
💊5💩2🍌2
При использовании сторов иногда получаются проблемы из-за перекрестных ссылок, которые дают ReferenceEror

При использовании модульных рефов может возникнуть аналогичная ситуация - например, когда переменная refA определяется в модуле А, который использует модуль B, а B вешает watch на refA. Причем это применимо только к системе реактивности Vue, потому что с обычными объектами такой проблемы нет.

#store #reactivity #architecture
Решения для проблемы выше

1. Переделать. Перекрестное использование сущностей - архитектурно плохая практика. Каждая должна содержать в себе только свое состояние и логику работы с собой. Если А использует B, значит B - утилитарен по отношению к А (например, А - какой-то бизнесовый стор, B - отвечает за открытие диалогов). Но тогда коду из А нечего делать в B.

К созданию сторов / модульных рефов надо подходить так же ответственно, как к проектированию схемы реляционной базы данных. Это координатный базис, и в нем не может быть перекрестных зависимостей.

Если есть логика, которая работает и с А, и с B, то, скорей всего, она прикладная для этих сторов, и должна лежать в отдельной сущности (компоненте, композабле, простом или реактивном модуле, сторе).

2. setTimeout / nextTick, как на картинке. Работает и с модульными рефами, но выглядит уродливым костылём

3. Шина событий (eventBus) для сообщений между сторами. Как самостоятельное решение возможно, но в данном случае опять же костыль.

4. Если refA в примере вынести в отдельный модуль, то ошибка пропадет. То же самое, скорей всего, справедливо и для сторов, но будет выглядеть неуклюже. Выносить надо не голый стейт, а разделять стор грамотно, по ответственности.

5. Не надо пихать реактивность туда, где можно обойтись без нее. Если переменная B зависит от А, и источников изменения А всего один-два, то необязательно ставить watch над А в B, можно обновлять B императивно напрямую. Это уберет прямую зависимость от А в B (если код в А уже как-то использует B), а также повысит читаемость и производительность. В первую очередь касается кода, который работает с бэкенд API.
Так же приоритетно, как и пункт 1.

#store #reactivity #architecture
👍5
В Твиттере обсуждение большого поста разработчика OpenNext (инициативы по облегчению деплоя Next приложений куда-то окромя Vercel)

Отмазывает компанию, говорит, всё это случайности, а не злой умысел. Что в Next.js было мало намеренных изменений, ломающих совместимость, но много ненамеренных багов при обновлениях версий.

Пишет, что Next.js стал популярным благодаря своим достоинствам, но в какой-то момент его "перепродвигали" из-за больших вложений в маркетинг. Теперь разработчики начинают понимать, что Next.js не всегда подходит для их задач. Предостерегает от того, чтобы называть тех, кто чувствует странности в продвижении Next.js, теоретиками заговора

Что сейчас у Vercel небольшая команда по связям с разработчиками (DevRel), и они не платят инфлюенсерам за продвижение. Однако раньше это было не так - Vercel активно спонсировал людей, как официально, так и неофициально.

#react #sst #nextjs #spa
💩3
Хорошая статья по использованию ИИ в программировании

Особенно, Заключение

Можно добавить, что большой бизнес все проблемы решит, а средний, малый и непрофильный столкнется с одноразовыми приложениями, накодеными vibe кодерами. Будет много недовольных клиентов.

Политика "одноразовых" продуктов из внешнего мира приходит в IT

#ai
💩3🔥2
Вспомнил, что истекли 30 суток моего карцера на @vuejs_ru

Что-то важное пропустил?

#vuejs_ru
😁7💩3
Если у вас есть массив, в каждом элементе которого есть computed, то лучше создать один на весь массив, чем много для каждого элемента

// Bad
const rows = productRows.map(row => ({
...row,
total: computed(() => row.price * row.qty),
}));


// Good
const computedRows = computed(() =>
productRows.map(row => ({
...row,
total: row.price * row.qty,
}))
);


#tip #performance #reactivity
🗿19👍7🤯4
2025/07/14 01:44:11
Back to Top
HTML Embed Code: