SvelteKit路由__layout文件内锚点href如何避免父路径硬编码
解决方法
完全可行,有以下几种实现方式,推荐优先使用第一种,最简洁无额外开发成本:
方法1:直接使用相对路径(最优方案)
在__layout.svelte中写不带开头斜杠/的相对路径即可,SvelteKit会自动基于当前layout所属的父路由路径拼接完整跳转地址:
<a href="blogs">All Blogs</a> <a href="new">Create New Blog</a>
这个方案后续你把blog文件夹重命名为posts时,不需要修改任何链接代码,所有跳转地址会自动适配为/posts/blogs、/posts/new。
方法2:通过$page store动态获取当前路径
如果有更复杂的路径拼接逻辑,可以调用SvelteKit内置的$page store获取当前路由路径后手动拼接:
- 首先在脚本部分导入store:
<script> import { page } from '$app/stores' </script>
- 模板中拼接路径,注意处理尾斜杠避免出现双斜杠异常:
<a href={`${$page.url.pathname.replace(/\/$/, '')}/blogs`}>All Blogs</a> <a href={`${$page.url.pathname.replace(/\/$/, '')}/new`}>Create New Blog</a>
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

