Vue-FAQ
946 subscribers
583 photos
93 videos
568 links
Канал сайта https://vue-faq.org
Информация о Vue.js, фронтенд разработке и не только

Contacts: @RuslanMakarov
Download Telegram
Прошлая неделя оказалась знаковой

#vite #webpack
🔥18
Зачем Pinia, если можно написать свой стор?

Захотелось ответить на очень однобокий взгляд вот здесь - https://t.iss.one/vuejs_ru_feed/37

Во-первых, это не велосипед, а решение под нужды своего проекта.

1. "Унификация и единый API". А давайте всех побреем и будем ходить строем. Сперва под Options API ходили, под Mixins API, под Vuex API, а теперь под Pinia API. Все, что было раньше и теперь на свалке, очевидно, было сразу плохо и временно, а вот Pinia API - это круто и навсегда, конечно

2. Нет, копию Pinia делать - это глупо. И никто это не делает. Надо решать задачи приложения, и без ограничений "единого API Pinia" они решаются проще, удобней, правильней и намного более функциональней при необходимости

3. Кроме ES модулей реализовать паттерн Singleton можно еще несколькими способами, если в этом есть необходимость по архитектуре приложения.

4. BFF SSR - зло и труп. Оставьте его врагам.

5. Какая-то надуманная проблема. Вы пишете сайты на десятки тысяч DOM элементов, а потом беспокоитесь, очистит ли GC покупательскую корзину, на которую [не] осталось ссылок?

6. А зачем очищать "глобальный стор"? Что под этим имеется ввиду, и как часто это надо делать? user = null; - это очищение стора? Свой стор не очищается при необходимости одной строчкой?

Еще раз, если у тебя в реактивных переменных столько данных, что они съедают значительную часть памяти веб-приложения и тормозят его - значит ты делаешь что-то не так. Эван для этого и придумал Reactivity API, возможности которого Pinia сильно обрезает.

И, нет, память это не освободит, а пометит для GC, который вряд ли на этом сработает в большинстве случаев.

7. Почему они должны быть объединены?

9. Реклама чужих велосипедов, таких же порой неправильных, тормозных и ненужных, как и во VueUse, в попытке сделать из Vue конструктор для вкатунов

10. Такое пишут люди, которые привыкли к Pinia и к её формату. Никаких проблем в работе в DevTools с обычными ("глобальными") реактивными переменными нет.

Ну и определять архитектуру приложения на основе своих предпочтений работы в DevTools - такое.



У не-Pinia решений есть плюсы. Ты не ходишь строем, а ходишь, как тебе удобно, используя в полной мере Vue Reactivity API.



На самом деле в оригинальном посте пропущен главный пункт, такой же как с Накстом:

11 . Когда в команде много слабо квалифицированных программистов, которые могут написать дичь, удобно всем ходить строем.

Ответ:

11. Повышайте уровень своих джунов до уровня проекта, а не опускайте проект до уровня джунов.

#pinia #reactivity
👍11👎111🔥1
Лафхак: в Cursor можно подключить модели из OpenRouter

Функционал у них в режиме Агента поменьше, но править файлы могут

Может быть полезно потому, что:

1) На OpenRouter огромное количество разных моделей, в том числе, специфичных
2) Можно подобрать неплохие бесплатные
3) Платные на небольших и средних заданиях могут выйти раз 5-10 дешевле курсоровских
4) OpenRouter можно оплатить криптой

Настраивать в OpenAI разделе

#ai #cursor #openrouter
Вчера устроил небольшой AI батл.

На бэкенде надо было разгрести код (PHP), разбить по модулям. Несколько десятков классов. Запросил мнения 4 LLMs

- horizon-beta
- o3
- sonnet 4
- gpt4.1

Gemini-2.5 Pro начала работать, но сломалась. Такое с ней бывает в Cursor-e

Каждый выдал md документ с диаграммами текущей архитектуры и свои предложения по новой.
Потом заставил их критиковать чужие решения и улучшать свои.
В общем, порядок расстановки указан выше.

horizon-beta понравилась быстротой и легкостью (в хорошем смысле) рассуждений. Непонятно, откуда она взялась. В кодинге не очень хорошо видит контекст.

o3 выдала очень полезное точечное решение.

sonnet подходит ко всему обстоятельно, но сидит в своих фиксированных рамках. Вот только так он хочет делать, а по-другому плохо. И код твой он так же перелопачивает под свою дудку, если дать волю.

В итоге сделал компиляцию первых двух, и зашлифовал sonnet-ом.

#ai #cursor
🔥4
Давно Минина не было

Вышло сегодня "собеседование" на senior позицию Vue (React) разработчика

Два чувака не стесняясь несут откровенную пургу
Не стесняясь - потому что работают исключительно на свою безмозглую вкатунскую аудиторию

Немного потыкал
Особенно понравилось вот это - "Особенности использования FSD в Vue"
Не смотрите, что там всего 18 секунд, они смогли осветить всё, что vue fsd-эшники так хотели знать

Видео: Youtube | Rutube

#minin
😁141🤮1
В Cursor появился GPT 5

Попробовал - по-моему, прям ощутимо лучше Sonnet 4

Когда надо было сделать модульный стор с запретом использовать Pinia, сгенерил такое:

/**
* RecordingsRepository provides a single facade for listing and mutating
* recordings, hiding the origin (client/server) and orchestrating syncing.
* It is intentionally simple and uses module-level reactive state.
*/
class RecordingsRepositoryImpl {
private storage = useStorageManager();
private api = useRecordingApi();

recordings = ref<Recording[]>([]);
error = ref<string | null>(null);

...

}

export const recordingsRepository = new RecordingsRepositoryImpl();

export function useRecordingsRepository() {
return recordingsRepository;
}


Кажется, это решение решает проблему цикличных импортов, который бывает с export a = ref(); на уровне JS модуля

#ai
👍4👎42
This media is not supported in your browser
VIEW IN TELEGRAM
Триллер

Скоро во всех кинотеатрах

#video #vite #evanyou
👍10