我遵循了 Vue SSR 的 vite 指南,并且能够将我的 Vue 组合 API 应用程序迁移到 SSR,并且工作正常。
唯一未解决的问题是数据获取仍然在客户端完成。我正在使用 onMounted() 挂钩来获取数据,它来自 Rest api。
现在需要加载数据的组件看起来像这样:
<script setup lang="ts">
...
const loaded = ref(false);
const data = ref([]);
// Client side hook. Could also be onMounted()
onBeforeMount(async () => {
data.value = await api.getSomething();
loaded.value = true;
});
</script>
这些钩子的问题是,它是在客户端执行的,而不是在服务器上执行的。因此,页面并未完全渲染,但具有与没有 SSR 相同的行为。
我只能想到一种服务器端钩子。
有人知道如何在页面发送到客户端之前将数据加载到服务器上吗?