Как Nuxt генерирует динамические маршруты

Как сказал документ nuxt:

Динамические маршруты игнорируются командой generate (пряжа генерировать). Nuxt не знает, какими будут эти маршруты, поэтому не может их сгенерировать.

и у них есть решение для создания статических файлов HTML для динамических маршрутов:

generate: {
    routes () {
      return axios.get('https://my-api/users')
        .then((res) => {
          return res.data.map((user) => {
            return {
              route: '/users/' + user.id,
              payload: user
            }
          })
        })
    }
}

Мой вопрос: думаю, у нас есть 50 пользователей при генерации nuxt, а nuxt создает 50 статических HTML для каждого из них. Но количество пользователей непостоянно. например через час у нас есть 55 пользователей. Итак, как это обработать с помощью nuxt? Или проясните: обрабатывает ли nuxt?


person BeHappy    schedule 28.04.2020    source источник
comment
Я не знаю как, но если вы добавите к файлу префикс a с подчеркиванием, Nuxt создаст динамический маршрут на основе этого файла. Если у вас /users/_id.vue, Nuxt создаст маршрут для каждого пользователя на этом пути. Таким образом, у вас будут URL-адреса типа /users/<user_id>   -  person Simo D'lo Mafuxwana    schedule 29.04.2020


Ответы (1)


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

В случае динамического списка пользователей у вас есть следующие решения:

  • используйте nuxt generate + внешнюю ловушку, которая запускает новый nuxt generate при каждом событии.
    например. использовать вкладку cron каждый час или при каждом создании пользователя для автоматического запуска команды генерации
  • используйте режим "spa" nuxt build && nuxt start --spa
    Вы можете разместить его на любом статическом веб-провайдере в качестве генерации, но вы потеряете преимущество SEO ...
  • используйте режим «ssr» nuxt build && nuxt start --spa
    Вы сохраните преимущество SEO, но вам необходимо найти поставщика сервера для размещения вашего приложения SSR на экземпляре Node.js.
person Nicolas Pennec    schedule 29.04.2020