You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:23:02