【发布时间】:2021-03-06 20:14:12
【问题描述】:
我正在 NuxtJs 中构建一个无头 SPA SSR,我想知道什么是确保应用程序仅在与远程 API 建立连接时才加载的最佳实践。
目前这是我的 index.vue 组件:
<template>
<div class="wrapper">
<div class="content">
<div class="title">
<h1>{{site.meta.title}}</h1>
</div>
</div>
</div>
</template>
<script>
import Meta from '../classes/api/General/Meta'
export default {
data () {
return {
meta: null
}
},
created () {
Meta.getMeta().then((response) => {
this.meta = response.data
})
}
}
</script>
这有时会解决 site.meta.title 未定义,因为该站点在 api 数据初始化之前加载。是的,site.meta.title 是在 api 的底层定义的。所以。我想的下一步是使用如下脚本的异步:
<script>
import Meta from '../classes/api/General/Meta'
export default {
data () {
return {
meta: null
}
},
async created () {
await Meta.getMeta().then((response) => {
this.meta = response.data
console.log(response.data.site.logo)
})
}
}
</script>
虽然这也无济于事。
但是v-if="meta" 确实有帮助。虽然:现在看来 Axios 不再渲染代码(ssr)中的内容了。
【问题讨论】:
-
什么是
headless SPA SSR?无头意味着没有前端,比如无头 CMS,这里是 Nuxt,所以你确实有一个前端。一个 SPA + SSR 应用被称为通用应用,甚至是同构的。