nuxt如何生成动态路由
How nuxt generate dynamic routes
正如 nuxt 的文档所说:
Dynamic routes are ignored by the generate command (yarn generate).
Nuxt does not know what these routes will be so it can't generate
them.
他们有一个为动态路由创建静态 html 文件的解决方案:
generate: {
routes () {
return axios.get('https://my-api/users')
.then((res) => {
return res.data.map((user) => {
return {
route: '/users/' + user.id,
payload: user
}
})
})
}
}
我的问题是:
假设我们在生成 nuxt 时有 50 个用户,nuxt 为每个用户创建 50 个静态 html。
但是用户数不是恒定的。
例如一小时后,我们有 55 个用户。
那么,nuxt 是如何处理的呢?
或者说清楚:
它是由nuxt处理的吗?
不,Nuxt 不会处理。生成模式将在命令的 运行 处创建一次所有静态文件。
对于动态用户列表,您有以下解决方案:
- 使用
nuxt generate
+ 在每个事件上触发新 nuxt generate
的外部挂钩。
例如。每小时或每次创建用户时使用 cron 选项卡来自动运行 生成命令
- 使用"spa"模式
nuxt build && nuxt start --spa
您可以将其作为生成器托管在任何静态 Web 提供商上,但是您
将失去SEO优势...
- 使用"ssr"模式
nuxt build && nuxt start --spa
您将保持 SEO 优势,但您必须找到一个服务器提供商来在 Node.js 实例上托管您的 SSR 应用程序。
正如 nuxt 的文档所说:
Dynamic routes are ignored by the generate command (yarn generate). Nuxt does not know what these routes will be so it can't generate them.
他们有一个为动态路由创建静态 html 文件的解决方案:
generate: { routes () { return axios.get('https://my-api/users') .then((res) => { return res.data.map((user) => { return { route: '/users/' + user.id, payload: user } }) }) } }
我的问题是: 假设我们在生成 nuxt 时有 50 个用户,nuxt 为每个用户创建 50 个静态 html。 但是用户数不是恒定的。 例如一小时后,我们有 55 个用户。 那么,nuxt 是如何处理的呢? 或者说清楚: 它是由nuxt处理的吗?
不,Nuxt 不会处理。生成模式将在命令的 运行 处创建一次所有静态文件。
对于动态用户列表,您有以下解决方案:
- 使用
nuxt generate
+ 在每个事件上触发新nuxt generate
的外部挂钩。
例如。每小时或每次创建用户时使用 cron 选项卡来自动运行 生成命令 - 使用"spa"模式
nuxt build && nuxt start --spa
您可以将其作为生成器托管在任何静态 Web 提供商上,但是您 将失去SEO优势... - 使用"ssr"模式
nuxt build && nuxt start --spa
您将保持 SEO 优势,但您必须找到一个服务器提供商来在 Node.js 实例上托管您的 SSR 应用程序。