关于Svelte + Capacitor非静态站点开发及预渲染导致首屏随机图片固定的问题咨询
Svelte + Capacitor 预渲染导致首屏随机图片固定的解决方案咨询
嘿各位,我最近在做一个基于Svelte和Capacitor的随机图片生成器,碰到个棘手的问题想求助!
为了把Svelte项目适配到Capacitor,我用了static-adapter,并且把prerender设置成了true。原本我的思路是用服务端渲染(SSR)在页面首次加载时就生成一张随机图片:在+page.server.ts的load函数里调用API获取随机图片URL,然后在+page.svelte里直接渲染这个返回的URL。
但问题来了——因为开启了预渲染,这个获取随机图片的API调用居然是在项目构建阶段就执行了,导致生成的静态页面里图片URL是固定死的!每次用户打开页面,首屏都是同一张图,完全没了随机的效果。
先给大家看下我的文件结构:
|---src/ |---routes/ |---+page.svelte |---+page.server.ts
客户端的+page.svelte代码很简单,就是渲染服务端返回的图片:
<script> export let data </script> <img src={data.imageURL}/>
服务端的+page.server.ts代码是这样的:
export const prerender = true; export async function load() { let imageURL = await getRandomImageUrl() return { imageURL } }
这是个简单的单页应用,除了首页没有其他路由。我知道改成在客户端组件挂载时再去拉取图片也能解决问题,但我还是想尽量保留首屏通过服务端逻辑生成随机图的方式,想问问有没有办法实现这个需求?
提前感谢各位的帮助!
备注:内容来源于stack exchange,提问作者Christopher Poulsen
相关产品推荐
相关产品推荐

