Как сделать динамическую подгрузку страниц в Nuxt 3 + SSR?

У меня есть приложение на Nuxt 3 и такая структура:

/<project-root>
├── /pages
|   ├── index.vue
|   ├── about.vue
|   └── [...dynamic].vue
└── /static-pages
    └── /page-1
        ├── manifest.json
        ├── index.js
        └── style.css

Мне нужно подгружать данные в зависимости от роута.

Т. е. при роуте https://my-site.com/page-1

Мне нужно, чтобы роутер, не найдя страницу page-1 в приложении (папке pages), сделал запрос в static-pages, вытянул оттуда page-1/manifest.json и подгрузил всё, что указано в манифесте и вставил на страницу в теги script и style с нужными src.

Манифест имеет такую структуру:

{
  "js": ["index.js"],
  "style": ["style.css"]
}

И ещё важно, чтобы это работало с SSR.

Суть в том, что есть как бы core приложение со своим функционалом и есть ленды, которые используют компоненты из core. Так вот, лендов много и они часто меняются, а вот core меняется редко, да и деплоить, билдить, гонять тесты напряжно по нескольку раз в день.

Библиотека vue-loader умеет собирать из .vue файлов компоненты не таща сам Vue. Эти компоненты и будут лежать в папках /static-pages

Я много пробовал, но всё это работает как-то криво. Nuxt, при попытке грузить из /static-pages пытается найти этот роут в pages, а не найдя там, попадает в компонент dynamic, и в dynamic оно опять пытается загрузить /static-pages и так по кругу.

Вопрос в том, как написать компонент dynamic, чтобы он работал как нужно? Я подозреваю, что тут пригодится папка server, но пока не очень понимаю, как это всё организовать.

Спасибо!


Ответы (0 шт):