【问题标题】:Sveltekit serverless adapter like vercel or adapter static?Sveltekit 无服务器适配器,如 vercel 或适配器静态?
【发布时间】:2021-08-03 08:14:14
【问题描述】:

我使用 sveltekit:svelte: (@sveltejs/kit": "1.0.0-next.95) 开发了一个网站。文章是markdown写的,所以我用mdsvex作为内容。

我在 cloudflare 页面中部署了带有适配器 vercel 和适配器静态的站点。

这两个脚本都运行良好,我只是想了解将无服务器功能与 vercel 适配器一起使用与将站点作为静态导出运行并使用可在任何地方工作的适配器静态(包括 vercel,即使没有具有无服务器功能)。

【问题讨论】:

    标签: svelte vercel sveltekit


    【解决方案1】:

    adapter-static 会将您的整个网站呈现为一组静态文件,即 HTML、CSS 和 JS。 adapter-vercel 将使用 Vercel 的无服务器功能进行动态服务器渲染。

    如果您的整个网站都可以预渲染,请使用适配器静态;否则,您可以使用adapter-vercel。来自SvelteKit docs

    您的应用中至少有一些页面可能可以表示为一个简单的 HTML 文件,因为它们不包含动态或用户特定的数据。这些页面可以由您的适配器预呈现。

    如果您的整个应用都适合预渲染,您可以使用adapter-static,它将为每个页面生成 HTML 文件,以及这些页面中的加载函数请求的其他文件。

    文档还讨论了如何知道页面何时为prerenderable

    基本规则是:要使页面可预渲染,任何两个直接点击它的用户都必须从服务器获取相同的内容。

    换句话说,任何涉及用户会话或身份验证的应用都不适合静态适配器,即使应用中的各个页面都适合预呈现。

    请注意,您仍然可以预渲染基于页面参数加载数据的页面,例如我们之前的 src/routes/blog/[slug].svelte 示例。 prerenderer 将拦截在 load 内部发出的请求,因此从 src/routes/blog/[slug].json.js 提供的数据也将被捕获。

    您仍然可以将 adapter-vercel 用于完全静态的网站,但您的页面的服务器渲染将在运行时而不是构建时发生,这可能会更慢和/或更昂贵。

    【讨论】:

    • 使用适配器静态,我应该能够从构建目录中的 index.html 文件在本地运行站点吗?而且,仅仅通过将构建目录的内容放到我的标准共享主机中? (我不能,所以想知道这是预期的行为还是我是否有其他问题。)
    • 您可以使用 IIS 或 Node 从构建目录本地托管站点 - 它似乎不仅仅适用于文件系统。
    猜你喜欢
    • 2021-12-01
    • 2013-06-13
    • 2022-01-21
    • 1970-01-01
    • 2022-06-19
    • 1970-01-01
    • 2012-12-22
    • 2011-01-05
    • 1970-01-01
    相关资源
    最近更新 更多