【发布时间】:2021-10-01 16:31:42
【问题描述】:
我正在尝试 Nuxt,因为我需要一个使用 API 数据创建路由的应用。
在我的示例中,我使用“nuxt/content”获得了一个虚假数据,其中有 2 家公司:
[
{
"id": "1",
"name": "company1"
},
{
"id": "2",
"name": "company2"
}
]
这样,我想生成 2 条路线(因为我有 2 家公司):
- /company1
- /company2
每次在 API 中添加新公司时,我希望 Nuxt 创建一条新路由。
我尝试使用静态模式并成功在nuxt.config.js 中生成函数。但在静态模式下,每次在 API 中添加新数据时,我都会生成静态文件。
这是我为静态模式所做的:
nuxt.config.js 文件:
export default {
target: 'static',
generate: {
async routes() {
const { $content } = require('@nuxt/content')
const files = await $content('companies').fetch()
return files.map(company => {
return {
route: '/' + company.name,
payload: company
}
})
}
},
_slug.vue 文件(在 pages 文件夹中):
<template>
<div>
<h1>test</h1>
<p>Path: {{ $route.path }}</p>
data : {{ company }}
</div>
</template>
<script>
export default {
asyncData({ payload }) {
if (payload) return { company: payload}
else {
return '-1'
}
},
mounted() {
console.log(this.$router)
}
}
</script>
这个解决方案在静态中效果很好,因为我在控制台和 dist 文件夹中看到了生成的路由。
但我认为我需要 SSR 解决方案,以便不必一直重新生成静态文件并重新上传它们。
我没有找到这样做的方法,我试图只从 nuxt.config 文件中删除“目标:'static'”,但没有生成路由(或者我不知道去哪里看看它是否工作)。如果我检查 console.log(this.$router),我只能看到“_slug”和“index”路由。如果我检查 dist 文件夹(和 routes.json 文件)也是一样。
如何在 SSR 模式下做到这一点?我会成为 SEO 的一个很好的解决方案吗?
【问题讨论】:
标签: nuxt.js server-side-rendering