从 SvelteKit 迁移
SvelteKit 是一个用于在 Svelte 之上构建 Web 应用程序的框架。
SvelteKit 和 Astro 的主要相似之处
标题为“SvelteKit 和 Astro 的主要相似之处”的部分SvelteKit 和 Astro 有一些相似之处,可以帮助你迁移项目:
-
SvelteKit 和 Astro 都是现代的 JavaScript 静态站点生成器和服务器端渲染框架。
-
SvelteKit 和 Astro 都使用
src/
目录存放你的项目文件,并使用一个特殊的文件夹进行基于文件的路由。为你的网站创建和管理页面应该会感到很熟悉。 -
Astro 有一个官方的 Svelte 集成,并且支持安装 NPM 包,包括一些 Svelte 相关的包。你将能够编写 Svelte UI 组件,并可能保留部分或全部现有的组件和依赖项。
-
Astro 和 SvelteKit 都允许你使用无头 CMS、API 或 Markdown 文件作为数据源。你可以继续使用你喜欢的内容创作系统,并且能够保留你现有的内容。
SvelteKit 和 Astro 的主要不同之处
标题为“SvelteKit 和 Astro 的主要不同之处”的部分当你在 Astro 中重建你的 SvelteKit 网站时,你会注意到一些重要的不同之处:
-
Astro 网站是多页面应用(MPA),而 SvelteKit 默认为带有服务器端渲染的单页面应用(SPA),但也可以创建 MPA、传统的 SPA,或者你可以在一个应用中混合使用这些技术。
-
组件:SvelteKit 使用 Svelte。Astro 页面是使用
.astro
组件构建的,但也支持React、Preact、Vue.js、Svelte、SolidJS、AlpineJS 和原始的 HTML 模板。 -
内容驱动:Astro 旨在展示你的内容,并允许你仅在需要时选择性地添加交互性。现有的 SvelteKit 应用可能为高客户端交互性而构建。Astro 具有处理内容的内置功能,例如页面生成,但可能需要高级的 Astro 技术来包含使用
.astro
组件难以复制的项目,例如仪表盘。 -
Markdown 就绪:Astro 包含内置的 Markdown 支持,并为每个文件提供了一个特殊的 frontmatter YAML
layout
属性用于页面模板。如果你正在转换一个基于 SvelteKit Markdown 的博客,你将不必安装单独的 Markdown 集成,也不必通过配置文件设置布局。你可以沿用你现有的 Markdown 文件,但你可能需要重新组织,因为 Astro 的基于文件的路由不需要为每个页面路由都创建一个文件夹。
从 SvelteKit 切换到 Astro
标题为“从 SvelteKit 切换到 Astro”的部分要将 SvelteKit 博客转换为 Astro,请从我们的博客主题入门模板开始,或在我们的主题展示中探索更多社区博客主题。
你可以向 create astro
命令传递一个 --template
参数,以使用我们的官方入门模板之一来启动一个新的 Astro 项目。或者,你可以从 GitHub 上的任何现有 Astro 仓库开始一个新项目。
npm create astro@latest -- --template blog
pnpm create astro@latest --template blog
yarn create astro --template blog
将你现有的 Markdown(或 MDX,通过我们的可选集成)文件作为内容,以创建 Markdown 或 MDX 页面。
虽然基于文件的路由和布局组件在 Astro 中是相似的,但你可能希望阅读有关Astro 的项目结构的内容,以了解文件应该放在哪里。
要转换其他类型的网站,例如作品集或文档网站,请在 astro.new 上查看更多官方入门模板。你会找到每个项目 GitHub 仓库的链接,以及一键在 IDX、StackBlitz、CodeSandbox 和 Gitpod 在线开发环境中打开工作项目的链接。
社区资源
标题为“社区资源”的部分如果你发现(或制作了!)一个关于将 SvelteKit 网站转换为 Astro 的有用视频或博客文章,请将其添加到此列表中!