Стоит ли изучать nuxt.js?

Недавно начал изучать vue, собираюсь делать SSR приложение, дабы получить все плюсы SPA, а так же и нормальную поисковую оптимизацию. Случайно наткнулся на nuxt.js, и рассказы о том, что этот фреймворк очень сильно облегчает работу как раз при разработке SSR. Но также столкнулся и с негативными комментами, которые говорят, что фреймворк далеко ушел от самого vue и не по тому пути, и что он напротив только все усложняет. Т.к. больше ничего полезного я найти не смог, решил обратиться к вам. Скажите, может есть у кого опыт работы с nuxt или опыт разработки SSR приложения? Можете что-то посоветовать: стоит ли изучать nuxt или есть более полезные фреймворки, или обойтись одним vue - еще проще, чем что-то дополнительное ставить? У меня стоит связка laravel-vue, она мне пока очень нравится, поэтому не хотелось бы использовать react или angular.
  • Вопрос задан
  • 18570 просмотров
Решения вопроса 1
@kicker1337
Работал с Nuxt в сумме примерно в течение года. Написал свой блог на нем (довольно большой), вот он на гитхабе: https://github.com/iliyaZelenko/blog-frontend

Недостатки которые заметил:

1) Он долго запускается при `nuxt dev` (мой блог запускается за 3-5 минут) и HMR обновляется в среднем 1-5 секунд (порой и дольше), даже если обновил просто template. Это больше всего напрягает.

2) После изменения кода, иногда папка `.nuxt` генерируется с ошибкой, приходится менять любую строчку в исходниках проекта чтобы опять запустить генерацию или порой полностью перезапускать Nuxt. Такая проблема была замечена не на всех проектах.

3) Бывает проблематично использовать модули которые не идут сразу на сервере и на клиенте, но это больше проблема SSR. Еще порой хочется получить сам nuxt контекст где store, router, плагины, но это нельзя сделать в некоторых местах, обычно эта проблема на клиенте. Например, на клиенте в store где state еще нет свойства window.$nuxt, нельзя обратится к плагину универсальных куков cookie-universal-nuxt и взять из куков значение и записать в state, а по другому к контексту nuxt не обратится. Store тяжело получить в самом store, порой это нужно.

4) Когда с ним использовал TypeScript, то иногда nuxt выдавал что типа (обычно интерфейса) не существует или другие ошибки типов, но этих ошибок на самом деле не было. Единственный выход — заново запускать nuxt dev и долго ждать, порой эта проблема возникала по несколько раз в течении 20 минут, приходилось перезапускать несколько раз.

В моем блоге мне почти всегда нужно было Dependecy Injection чтобы внедрять разные модули, но они были не доступны в `asyncData`, там нет this, пришлось получать прямо из контейнера. Пример кода:

const CategoryRepository = serviceContainer.get<CategoryRepositoryInterface>(TYPES.CategoryRepositoryInterface)


Взят от сюда.

Вообще вместе с vue-class-component нельзя использовать конструктор чтобы внедрять там зависимости, я использовал inversify для DI, но чтобы оно работало vue-class-component пришлось использовать костыль с vue-inversify-decorator (костыльный способ от разработчиков vue-class-component исправить эту проблему), писать `@Provide(container)` в layouts/default.vue (лучшего места не нашел к сожалениию, это тоже минус). Как было бы удобно если внедрил зависимости в конструктор и они сразу есть во всем компоненте и в `asyncData`.

Хочу изучить next (react) чтобы было с чем сравнить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Jekins
@Jekins
Front-end developer
На nuxt пишем проект уже пол года, все с ним отлично. Даже не понятно, как он может отдалиться от vue, если это обычная реализация ssr по стайлгайдам vue. Можете использовать его и не волноваться. Писать проект вы будете на обычном vue, а nuxt лишь поможет избежать гемора с настройкой ssr. А если увидите, что кто-то пишет будто он не гибкий - не верьте, там можно все настроить и перенастроить. Даже самые глубинные вещи. Тем более, это самая популярна ssr реализация для vue с большим комьюнити, которые уже все изучили и написали все необходимые вещи, которые могут понадобится при разработке.
Ответ написан
@beduin01
Не стоит изучать. В Vue 3.0 это будет из коробки
Ответ написан
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
Лучше использовать vue-cli-3 и плагин @vueneue/ssr.

В предыдущих проектах использовал Vue Server Renderer, поскольку он более гибкий. В nuxt некоторые вещи сначала жизнь упрощают, а потом реально начинают ее портить. Взять даже тот самый хваленый роутинг на файлах. Я бы понял, если бы он поддерживал все возможности vue-router, но он реально практически все отрезает :( Можно, конечно, отключить это дело или вообще написать свой шаблон формирования роутинга для Nuxt, но зачем же тогда сам Nuxt?

Дальше планирую пользоваться связкой vue-cli-3 + плагины (в т. ч. указанный выше).
Ответ написан
@Serzio
Nuxt очень перспективная штука. Сделал несколько проектов. Не знаю, в чем они от Vue ушли... просто многие рутинные вещи под капот спрятали. Настройка проекта производится в nuxt-config вместо файла webback. Если нужна полная гибкость и прозрачность, лучше устанавливать все вручную без всяких сборок. Но для большинства задач это не требуется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы