c语言编程笔录

首页 >   > 笔记大全

笔记大全

怎么解决uniapp图片路径错误问题

更新时间:2023-11-09

背景

Uni-app是基于Vue.js语法封装的跨平台开发框架,支持编写一次代码,同时生成运行于多个平台的应用。在Uni-app开发中,常会遇到图片无法正常加载的问题,其中最常见的是图片路径错误的问题。

问题分析

在Uni-app中,我们可以使用相对路径或绝对路径设置图片的地址,其中相对路径是从当前文件开始的相对路径,如:'../assets/images/logo.png'。而绝对路径则是相对于当前网站的根目录的路径,如:'/assets/images/logo.png'。在使用时,我们可以使用'data-'属性、'v-bind'等指令来将路径赋值给图片的'src'属性,如下示例:



然而,在以上示例中,如果我们将页面放置于'dist'目录下,使用npm run build进行打包,再将生成的文件放置于服务器上,则页面中的图片就会无法正常展示。这是由于相对路径相对于当前文件路径,而当前文件路径在服务器上与本地不同,导致进行相对路径的计算时出现错误。所以,在部署时,需要将相对路径更改为绝对路径。

解决方案

基于上述问题分析,我们可以通过以下方法来解决Uni-app中图片路径错误的问题:

1. 设置publicPath

在webpack配置文件中,我们可以设置'publicPath'属性,将路径替换为绝对路径。下面是一个示例:

// vue.config.js
module.exports = {
  publicPath: '/my-app/'
}

假设我们要将图片放在'my-app/assets/images'文件夹下,则可以使用以下路径来指定图片路径:


其中,'$withBase'是Vuepress的内置函数,用于将路径添加前缀。此时,在打包后的文件中,路径将被替换为/mu-app/assets/images/logo.png。

2. 基于process.env.BASE_URL设置

Uni-app提供了'publicPath'默认值的获取方式,即使用'process.env.BASE_URL',可以在Uni-app项目中直接使用。示例如下:


在打包后的文件中,路径会被替换为当前url后所有路径(包括项目访问路径和文件路径)。

3. 使用绝对路径

在Uni-app开发中,我们可以直接使用绝对路径,指定图片位置。如:


在打包后的文件中,路径会被替换为当前url后所有路径(包括项目访问路径和文件路径)。

总结

Uni-app是一个优秀的跨平台开发框架,通过以上方法,我们可以解决其中最常见的图片路径错误的问题,从而为开发者们提供更加友好的使用体验。