uni-app image标签的src绑定变量无法使用绝对路径@/
uni-app image标签的src绑定变量无法使用绝对路径@/
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 13.4.1 | HBuilderX |
HBuilderX | 4.29 |
示例代码:
<template>
<image :src="data.typeimg"></image>
</template>
<script setup>
import { reactive } from 'vue'
const data = reactive({
typeimg: '@/static/1.jpg',//不行
//typeimg: '../../static/1.jpg'//可以
})
</script>
操作步骤:
如上代码
预期结果:
显示图片
实际结果:
不显示图片
bug描述:
image标签的src绑定一个变量的话,用不了绝对路径@
在文档有中有提到,可以详细看一下,在变量中引入时,图片需要单独引入:js/uts 引入静态资源
示例:
<template>
<image :src="data.typeimg"></image>
</template>
在uni-app中,image
标签的 src
属性通常用于绑定图片的URL。当使用相对路径(如~/static/images/example.png
)时,uni-app会正确解析这些路径。然而,@/
符号在uni-app中并不是一个内置识别的路径别名,它通常在Vue CLI项目中用作src
目录的别名。
在uni-app中,如果你想要使用类似于@/
的绝对路径,你需要通过配置Webpack别名(仅在HBuilderX的Vue CLI插件或自定义Webpack配置中有效)或者在uni-app的约定路径下组织你的资源文件。但大多数情况下,uni-app推荐使用相对路径或者预定义的静态资源路径。
下面是如何在uni-app中正确使用图片路径的示例,以及如何通过条件渲染来动态设置图片路径:
1. 使用相对路径
<template>
<view>
<image :src="relativeImagePath"></image>
</view>
</template>
<script>
export default {
data() {
return {
relativeImagePath: '~/static/images/example.png' // 注意:这里的路径在HBuilderX中会被正确解析
};
}
};
</script>
2. 使用静态资源路径(推荐)
将图片放在static
文件夹下,然后使用相对路径(从static
开始)或者直接使用/static/
开头的绝对URL路径(基于应用的根目录)。
<template>
<view>
<image src="/static/images/example.png"></image>
<!-- 或者使用变量绑定 -->
<image :src="staticImagePath"></image>
</view>
</template>
<script>
export default {
data() {
return {
staticImagePath: '/static/images/example.png'
};
}
};
</script>
3. 条件渲染动态图片路径
如果你有多个图片路径,需要根据条件动态选择,可以这样做:
<template>
<view>
<image :src="getImagePath()"></image>
</view>
</template>
<script>
export default {
methods: {
getImagePath() {
// 根据某些条件返回不同的图片路径
const condition = true; // 假设的条件
return condition ? '/static/images/image1.png' : '/static/images/image2.png';
}
}
};
</script>
在uni-app中,尽量避免使用非标准的路径别名(如@/
),而是遵循uni-app的路径约定,以确保跨平台兼容性和构建工具的正确解析。