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

vue-inline-svg在Vue路由导航循环中的正确内联语法咨询

解决vue-inline-svg动态绑定路由中SVG路径的问题

问题核心在于webpack无法解析完全动态的资源路径,需要保留静态前缀让模块打包工具提前识别资源目录,以下是两种可行的写法:

写法一:调整路由配置的iconPath为相对路径

将路由里的iconPath改成相对于导航组件的相对路径(比如导航组件在src/components/Nav.vue,图片在src/img/,路径就写../img/icon-thing.svg),然后直接绑定:

<template v-for="value in $router.options.routes">
  <RouterLink :to="{ name: value.name, params: { city: currentCity } }">
    <inline-svg :src="require(value.iconPath)" />
  </RouterLink>
</template>

写法二:保留原有绝对路径,拼接静态前缀

如果不想修改路由配置,利用Vue项目默认的@别名(指向src目录),把动态路径拼接成工具可识别的格式:

<template v-for="value in $router.options.routes">
  <RouterLink :to="{ name: value.name, params: { city: currentCity } }">
    <inline-svg :src="require('@/img' + value.iconPath.replace('/img', ''))" />
  </RouterLink>
</template>

针对Vite项目的写法

如果你的项目用Vite构建,不需要require,直接用原生的URL构造方法:

<template v-for="value in $router.options.routes">
  <RouterLink :to="{ name: value.name, params: { city: currentCity } }">
    <inline-svg :src="new URL(value.iconPath, import.meta.url).href" />
  </RouterLink>
</template>

内容的提问来源于stack exchange,提问作者KSPR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:24:52