swup
适用于服务器渲染网站的多功能且可扩展的页面转换库
Swup是为服务端渲染(SSR)网站设计的页面过渡库,通过管理整个页面加载生命周期,实现当前页与下一页之间的平滑动画,同时提供缓存、智能预加载、原生浏览器历史记录同步及增强可访问性等能力,让传统多页网站获得接近单页应用(SPA)的交互体验。
| 收费 | 开源免费(MIT) |
|---|---|
| 平台 | 浏览器端JavaScript库 |
| 中文 | 无官方中文文档 |
| 用途 | 为服务端渲染网站添加类SPA页面切换动画 |
Swup v4版本(当前稳定版)通过拦截链接点击,用Ajax获取新页面内容,仅替换指定容器(如<main>)内的DOM,配合CSS过渡类实现页面切换动画。它内置了完整的生命周期钩子系统(Visit API),开发者可在动画开始、内容替换、完成等阶段注入自定义逻辑。
Swup提供官方插件和社区插件,覆盖表单提交、脚本重执行、页面片段替换、进度条等场景。插件机制基于统一的Helper工具集,开发者可调用getCurrentUrl、updateHistoryRecord、Location等内部API构建自定义功能。
Swup专为SSR网站设计,静态博客、Hugo、Astro等生成的站点均可使用。实际部署时需注意:页面中的JavaScript(尤其是内联脚本)可能因DOM替换而失效,需配合SwupScriptsPlugin或手动将脚本移至<body>/<main>内;部分第三方评论组件(如DoIt主题)可能无法自动重新初始化,需要额外处理。
Q1:Swup是否必须配合特定前端框架使用?
A1:不需要。Swup是框架无关的纯JavaScript库,直接通过<script>标签或npm引入即可。官方提供了Astro、Alpine.js、Livewire等集成方案,但核心库不依赖任何框架。
Q2:使用Swup后页面中的JavaScript为什么可能失效?
A2:Swup通过Ajax替换页面内容,不会自动重新执行<script>标签中的代码。官方提供了@swup/scripts-plugin(SwupScriptsPlugin)来解决此问题,该插件会检测并重新执行<body>和<head>中的脚本。开发者也可通过data-swup-ignore-script属性标记无需重复执行的脚本。
Q3:Swup的缓存和预加载机制如何配置?
A3:缓存默认启用,可通过Swup实例的options.cache属性调整(如设置maxPages限制缓存页面数)。预加载通过@swup/preload-plugin实现,支持hover和visible两种触发模式,可配置预加载延迟时间。
更多同类工具与网站,可在动画库分类继续挑选。
信息核实于 2026年7月,具体以官网为准。
评论
暂无评论