Как стать автором
Обновить

Комментарии 23

Скорость деплоя это конечно хорошо, а как на счёт скорости работы? Есть сравнение производительности итогового продукта?

Специально мы никакие тесты по производительности не делали, так как это была не первопричина нашего обновления. Но есть скриншоты из вкладки "perfomance" chrome devtools:

Vue3/Nuxt3
Vue3/Nuxt3
Vue2/Nuxt2
Vue2/Nuxt2

Замеры, конечно, сделаны не при "идеальных" условиях, но всё равно видно, что выигрыш есть и по времени и по памяти.

Вы пишете внутренние сервисы на Nuxt?
С SSR?

Nuxt, в отличии от Next, умеет работать в SPA режиме

Nuxt вроде как не обязательно SSR, это по сути связка вью + сервер, на котором можно прокси роутинг написать

Да, внутренние сервисы мы пишем на Nuxt
В нашем случае в SSR нет необходимости, поэтому мы пишем сервисы в SPA режиме

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

Я не точно спросил - имелось ввиду Nuxt
Почему он в данном случае? Чем лучше простого Vue?

У нас все проекты сделаны именно на Nuxt. На вопрос почему, я так же не дам достоверного ответа, потому что как я уже писал, это решалось до моего прихода в Ozon. Думаю, так сделано, потому что хоть в основном мы и пишем в режим SPA, но если понадобится SSR режим, то нужно будет сделать незначительные изменения в конфигах и всё будет готово. При этом вся обвязка, остальные настройки, конфиги и модули уже будут настроены. Некое универсальное решение.
Ну и плюс удобства в виде автоматического роутинга с помощью папки pages, автоматического подключения плагинов и пр. в Nuxt, тоже не стоит забывать.

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

Ожидал увидеть как вы решили проблему параллельной разработки во время переписывания под vue@3. Вы просто остановили добавление новых фич и доработки и просто переписывали?

И еще интересно, у вас не было проблем с юнит тестами?

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

Что касается unit-тестов, то не припомню ничего экстраординарного. Поэтому вряд ли были какие-то проблемы

А чего сложного вводить новый функционал и переводить на vue 3? У нас намного глобальнее crm и она была написана на vue 2. И мы просто постепенно все переводили на 3 версию.

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

А так, по данному вопросу нет единого правильного ответа: каждый делает настолько, насколько позволяют ресурсы. И если у вас всё удалось – вы молодцы!

Понял) спасибо за ответ

Мы бы просто за пару недель не сделали. Переписывали и бэк и фронт. А это колоссальный объем работы был

Сколько времени в итоге занял переход?)

Переход в итоге занял примерно 2 недели, то есть 1 спринт)

Сейчас занимаюсь тем же, но мы решили не использовать axios, вместо него fetch. А т.к. для нас SEO имеет значение, все это еще и на SSR, со всеми своими нюансами. Хочется спросить, сколько времени у вас занял перевод всего проекта на Nuxt3?

При наших условиях, мы потратили на миграцию примерно 2 недели (1 спринт)

Ну это прям круто 🤟

Очень интересная и увлекательная статья🔥

Пробовали ли вы у себя nuxt 3 layers?
Если нет, то очень удобная фича в nuxt 3, которая позволяет разбивать большой проект на несколько слоев и потом подключать их одном билде или же каждый слой собирать по отдельности

Например:

  • base layer

  • catalog layer (extend base)

  • cart layer (extend base)

  • checkout layer (extend base)

  • profile layer (extend base)

  • app (extend catalog, cart, checkout, profile)

каждый слой можно тянуть отдельного из git репозитория

Зарегистрируйтесь на Хабре, чтобы оставить комментарий