Ответы пользователя по тегу Vue.js
  • Как вывести template внутри template?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Проблема не нова, сначала была вот такая дискуссия, потом в качестве решения на базе vue-macros был реализован вариант из обсуждения, и после него уже выросла вот такая простенькая, но рабочая утилитарная функция createReusableTemplate.

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

    Относительно абстрактной "правильности" - если эта механика нужна вам единоразово или около того, и вы не собираетесь каждый компонент дробить внутри на какие-то маленькие кусочки, то возьмите createReusableTemplate, если необходимость в таком управлении видите часто - лучше сформировать какие-то правила по созданию и использованию подкомпонентов - проще поддерживать будет.
    Ответ написан
  • Какие преимущества использования pinia/vuex в Vue3?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Автор Pinia вот в этом issue отвечал на вопрос, с тех пор ничего не изменилось :)
    Ответ написан
    Комментировать
  • Готов ли Nuxt 3 для разработки на настоящий момент?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Тут нужна преамбула:

    Stable он стал исключительно потому, что это событие надо было приурочить к конференции "Nuxt Nation" (в общем-то, с этого коммита они начали конференцию), потому что, во-первых, это красиво и всего раз в году, а во-вторых, это важно с точки зрения маркетинга - Эван Ю, например, получил возможность этим фактом бравировать.

    По факту же, последний Release Candidate в шапке описания содержит сообщение "1 or 2 additional release candidates are expected before the final 3.0.0 version" (причём в моей памяти оно отложилось как "few more release candidates" - может, отредактировано, а может, я неправильно запомнил).
    Как бы то ни было, планировалось 2 релиза до стабильной версии. Но через 2 недели случился Nuxt Nation. Осталось два релиза до стабильной версии :)

    С начала декабря висит черновик MR с релизом 3.1.0, в котором было написано, что он будет готов в декабре. Сейчас там написано, что он будет готов в январе (в подтверждение того, что описания таки редактируются).
    Это всё к тому, что релизный цикл ненадёжный и скорее ситуативный. Вот ишью, в котором вопрос поднимается. С учётом того, что и публичную бету отложили на полгода, и стабильный релиз на тот же срок (и ещё больше), а также потому, что на момент релиза было 400 ишью, сейчас - почти 600, я укрепляюсь во мнении, что они замахнулись на слишком многое сразу, имея команду в 3 человека. Причём приоритетность задач... Ну, я особо не сталкерил за контрибьюторами, но осталось ощущение, что в первую очередь делается то, что интересно, а не то, что у людей больше всего болит.
    И тем не менее, они фанаты и многое успевают :)

    ---

    К сути вопроса - если вы делаете что-то с нуля, то можно попробовать. Даже нужно, ибо год спустя большая часть проблем решится, а цикл разработки он примерно такой и есть. Главное - помечать костыли и подпорки :)

    У меня в продакшене проектов на Nuxt 3 нет, но есть пара в активной разработке.
    Вы помучаетесь с настройкой прокси для запросов (потому что встроенной функциональности ждём уже почти год) (но там можно подпереть и заработает). Там будут ещё проблемы, особенно под Windows и если вам нужны свои модули, но это запомнилось больше всего. Но ничего нерешаемого пока нет.

    Если же вы хотите мигрировать существующий проект...
    По моим ощущениям, у Nuxt 3 большие проблемы с определением места, где что-то пошло не так.
    Вам, скорее всего, придётся мигрировать довольно маленькими кусочками и проверять, не сломалось ли чего, потому что если сломалось где-то в большом куске кода, вы почти наверняка получите ошибку в духе "500. Что-то не работает, а где - не покажу".
    Короче, это будет "написание с нуля, копируя кусочки из предыдущего релиза на Nuxt 2".

    Ну и плюс - экосистема. У меня почти всё своё, так что это не было сильно больно, но если активно пользуетесь сторонними модулями - смотрите поддержку и дату последнего обновления.

    В целом, после перехода удобство разработки значительно повысилось, во многом из-за TS без костылей (ну, почти, я очень надеюсь что в обозримом будущем вот это закроется. Хотя Эван обещал это релизить в ноябре... Все факапят сроки :) ).
    Сборка побыстрее примерно вдвое, hot reload весьма значительно быстрее (почти мгновенно до сих пор, хотя видна тенденция к замедлению. В любом случае 20-30x прирост по сравнение с Nuxt 2).
    Клиентский перфоманс, кстати, опираясь на попугаи PageSpeed, возрастает примерно так, что там, где на Nuxt 2 было 60, тут станет 80. Я не копал пока глубоко в клиентскую оптимизацию на Nuxt 3, наверняка там можно что-то выдумать, но по первым впечатлениям вот так - побыстрее, но чуда не случилось, фреймворк всё ещё имеет существенный оверхэд по сравнению с чем-то более нативным.
    Ответ написан
    1 комментарий
  • Хранить во vuex массив объектов или объект с объектами?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вот видите - если "оставить как есть", то у вас не возникает вопросов, как с этим работать, а вторая идея - вызывает.

    Риторический вопрос - как с учётом этого факта будет "правильно"?
    Нериторический вопрос - а вы чего боитесь в первом варианте и как эту проблему должен решить второй?

    Объект с ключами в виде ID для такого толка коллекций иметь удобно, но это не должно быть основным путём хранения данных, если вам важен порядок элементов. Сделайте геттер, который будет брать исходный массив и собирать из него объект в нужном виде.

    Кстати, если используете Vue3 - у вас нет ни одной причины не перейти на Pinia вместо Vuex, это более удобный инструмент абсолютно во всех отношениях. :)
    Ответ написан
    Комментировать
  • Выбор из нескольких компонентов?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    <component :is="x === 1 ? A : B" />

    Также работает со строками, если компоненты зарегистрированы локально/глобально/вообще из HTML:

    <component :is="x === 1 ? 'div' : 'my-component'"></component>
    Ответ написан
    1 комментарий
  • Как реализовать двойной фильтр (ползунок) на Vue в input type='range'?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Нативными средствами никак, вам нужен кастомный контрол.
    Вы будете долго искать что-то более-менее адекватное и остановитесь на этом компоненте. Пожалуйста.
    Возможно, под Vue 3 есть что-то получше, но для меня это пока неактуально - не смотрел.
    Ответ написан
  • Кто-то уже окунался в разработку с Nuxt 3?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вы соберёте все проблемы и завалите все дедлайны. :)

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

    Причём после релиза было ощущение что "сейчас всё быстренько допилят" (потому что и без того релиз на полгода откладывали), но динамика показывает, что ближайшие полгода - вряд ли, а то и год.

    Да и вообще есть ощущение, что они слишком фанатично пытаются всё упростить и обвешать магией, ушли куда-то не туда.
    Всякий сахарок - это прикольно, но должно быть опционально и навешиваться поверх уже готовой, работающей системы, а там половина issue - это борьба с теми проблемами, которые они сами себе придумали в погоне за "хотим, чтобы тут одну строчку написать - и дальше оно всё само".
    Но альтернатив не видно, поэтому пока Nuxt 2, возможно Nuxt Bridge, но и то смотреть надо.

    Другой вопрос - а зачем вам SSR для CRM? Для морды можно и пререндер сделать, а всё что за авторизацией - кому вообще интересно, есть там серверный рендеринг или нет?
    Ответ написан
    4 комментария
  • Как создать define для одного vue документа?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Судя по всему, вам нужно просто заменять одну строку на другую?
    В webpack такие преобразования делаются с помощью лоадеров, например, вам может подойти string-replace-loader (сам не пользуюсь, но по тексту задачи - почему бы и не да).

    Но вообще это странно, на несуществующий в данном контексте SOMETHING будет ругаться и IDE, и линтеры, да и вообще это какая-то магия, а чем меньше магии, тем лучше.
    Если приведёте конкретный пример, а не абстрактный SOMETHING, то будет понятнее, чего вы хотите и, вероятно, можно будет посоветовать более очевидное решение.
    Ответ написан
    Комментировать