Я строю проект, в котором все мои данные - включая маршруты страниц - поступают из конечной точки GraphQL, но должны размещаться на статическом сайте (я знаю, я знаю. Не начинайте).
Мне удалось статически сформировать маршруты из данных, используя следующий код в nuxt.config.js
:
generate: {
routes: () => {
const uri = 'http://localhost:4000/graphql'
const apolloFetch = createApolloFetch({ uri })
const query = `
query Pages {
pages {
slug
template
pageContent {
replaced
components {
componentName
classes
body
}
}
}
}
`
return apolloFetch({ query }) // all apolloFetch arguments are optional
.then(result => {
const { data } = result
return data.pages.map(page => page.slug)
})
.catch(error => {
console.log('got error')
console.log(error)
})
}
}
Проблема, которую я пытаюсь решить, состоит в том, что некоторые страницы должны использовать макет, отличающийся от стандартного, правильная компоновка указывается в данных GraphQL как page.template
, но я не вижу способа передать это информация к роутеру.
Я пытался изменить return data.pages.map(page => page.slug)
на:
return data.pages.map(page => {
route: page.slug,
layout: page.template
})
но это, кажется, не стартер. Кто-нибудь знает, как передать предпочтение макета маршрутизатору vue?