今天我第一次尝试使用SSR(服务器端呈现)。
我只需要将其用于SEO用途:因此,没有Java的浏览器(阅读器)以及标准的浏览器。
在我的Svelte / Sapper应用中,我使用GraphQL(Apollo,URQL或SVQL)。
无论我选择哪种GraphQL客户端,我都无法理解如何管理对GraphQL端点的调用的加载。
我的意思是,由于我们不在一个每次用户(或机器人:搜索引擎)浏览DOM时都可以使用对事件的反应性来重写DOM的一部分(我在nodejs服务器中呈现)的环境中。网站(没有javascript)只会看到GraphQL调用的等待状态:“正在加载待办事项...”。
我残酷地错了吗?
<script>
import { initClient, query } from '@urql/svelte';
initClient({ url: "https://0ufyz.sse.codesandbox.io" });
const todos = query({
query: `
query {
todos {
id
text
complete
}
}
`
});
</script>
{#if $todos.fetching} <!-- This is the only state I see in my server rendered response -->
Loading todos...
{:else}
<ul>
{#each $todos.data.todos as todo}
<li>{todo.text}</li>
{/each}
</ul>
{/if}
即使我设法在快递服务器中等待GraphQL响应并呈现数据而不是加载消息,问题是时间要长得多(如果GraphQL端点很慢)并且用户体验令人沮丧,特别是对于使用浏览器和javascript的标准用户。
也许我在推理中缺少某些内容。
但是什么?
今天我第一次尝试使用SSR(服务器端渲染)。我仅需要将其用于SEO用途:因此,没有Java的浏览器(阅读器)以及标准的浏览器。在我的Svelte / Sapper应用程序中,我是...