Один из ответа на вопрос "Почему Nuxt, а не чистый Vue?" - типовая структура Nuxt.js приложения. Фреймворк предлагает своё готовое решение по разбитию приложения на папки и файлы. Главный плюс типизации расположения файлов проекта и разделения функциональности - более простой вход в чужие проекты.
Не каждая из нижеперечисленных папок является обязательной. Например, если вы не используете Vuex, то папка Store вам просто не нужна.
- Assets - файлы, которым потребуется дальнейшая компиляция. Например, это может быть scss файл, который при сборке будет преобразован в css.
- Components - классические Vue компоненты.
- Layouts - шаблоны. Например, шаблон страницы с ошибкой или шаблон административного раздела сайта.
- Middleware - скрипты, которые могут быть запущены перед рендером определенных страниц или шаблонов.
- Pages - страницы сайта: статические и динамические. Страница - это аналог Vue компонента.
- Plugins - скрипты, которые мы можем встроить (inject) в наше приложение. А также место для подключения классических Vue плагинов.
- Server - папка с бэкендом. Сугубо опциональная.
- Static - статические файлы, которые доступны по пути "/". То есть это оптимальное место для favicon и robots.txt.
- Store - менеджер глобальных состояний Vuex.
- nuxt.config.js - основной файл с настройками Nuxt.js приложения.
Также в проекте могут быть несколько папок, в которых хранятся сгенерированные приложения (.nuxt и dist), а также хранилище всех зависимостей (node_modules).