vue的url请求图片的问题及请求失败解决

 更新时间:2023年09月26日 09:33:10   作者:春风又一季  
这篇文章主要介绍了vue的url请求图片的问题及请求失败解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue的url请求图片的问题,请求失败

使用vue-cli创建项目时,发现文件结构中有一个叫做static的文件夹。

图片一类的静态文件,应该放在这个static文件夹下,这个文件夹下的文件(夹)会按照原本的结构放在网站根目录下。

这时我们再去使用/static绝对路径,就可以访问这些静态文件了

在vue的开发中遇到这样一个问题

img的src属性绑定url变量,然而图片加载失败。

大部分的情况中,是开发者使用了错误的写法,例如:

<img src="{{ url }}"/>

这样写肯定是不对的,正确的写法应该使用v-bind:

<img v-bind:src="url "/>

不过,有时候即使使用了正确的语法,依旧无法显示图片,因为你的imgUrl使用了本地图片的路径。

Vue中img的src属性绑定与static文件夹实例_JavaScript

现在,我们要在App.vue里使用位于src/assets/目录下的logo.png图片,于是,我们设:

url = ‘./assets/logo.png'

奇怪的事情出现了,图片加载失败。查看网页源代码,发现一个错误

然后在<img src= './assets/M.png'>可以显示的出来

正确的图片显示的路径是这样的

看这个错误代码,我们发现,网页把根域名作为相对路径的根目录了,然而我们文件的路径是相对于项目文件的根目录的,当然就找不到了。

是不是说只要把url改成./static/img/logo.png就可以了呢?

依然是不行的。打开img文件夹我们可以发现,所有的文件名后都被添加上了一个随机字符串,原始的文件名已经无法对应了。

那么,到底应该怎么加载本地图片呢?

回头看vue-cli的文件结构,发现其中有一个叫做static的文件夹,尝试将logo.png放入这个文件夹,然后修改imgUrl:

url = ‘/static/logo.png' 
url = ‘./static/logo.png' 
url = '…/static/logo.png' 

都可以成功读取到了logo.png. 执行 npm run build后查看dist文件,发现logo.png原封不动地放在了根目录下。

这样就可以成功的显示

原来,之前的目录结构是有问题的,图片一类的静态文件,应该放在这个static文件夹下,这个文件夹下的文件(夹)会按照原本的结构放在网站根目录下。

这时我们再去使用/static绝对路径,就可以访问这些静态文件了。

另外,如果说想在不调整目录结构的情况下读取本地图片,还有一个方法,那就是直接传入图片编码。

即:

url = require('./assets/M.png')

这样可以读到项目路径下的图片,但是要注意,因为CommonJS只允许使用字符串字面量,所以这种方法的灵活性依旧很差,所以还是推荐将静态文件放入static文件夹下。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue响应式系统之observe、watcher、dep的源码解析

    vue响应式系统之observe、watcher、dep的源码解析

    这篇文章主要介绍了vue响应式系统之observe、watcher、dep的源码解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • vue中el-autocomplete与el-select的异同

    vue中el-autocomplete与el-select的异同

    本文主要介绍了vue中el-autocomplete与el-select的异同,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 详解本地Vue项目请求本地Node.js服务器的配置方法

    详解本地Vue项目请求本地Node.js服务器的配置方法

    本文只针对自己需要本地模拟接口于是搭建一个本地node服务器供自己测试使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • 详解vue2.6插槽更新v-slot用法总结

    详解vue2.6插槽更新v-slot用法总结

    在 2.6.0 中,我们为具名插槽和作用域插槽引入了一个新的统一的语法 (即 v-slot 指令)。这篇文章主要介绍了详解vue2.6插槽更新v-slot用法总结,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • vite打包去除console.log和debugge的方法实践

    vite打包去除console.log和debugge的方法实践

    本文主要介绍了vite打包去除console.log和debugge的方法实践,vite 已经将这个功能内置了,所以我们只需要修改配置文件,下面就来介绍一下如何修改
    2023-12-12
  • 浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验

    浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验

    这次我想给大家介绍的内存泄漏的定位方法,并非工具的使用。而是一些经验的总结,也就是我所知道的 VueJS SSR 中最容易出现内存泄漏的地方,非常具有实用价值,需要的朋友可以参考下
    2018-12-12
  • 详解Vue 多级组件透传新方法provide/inject

    详解Vue 多级组件透传新方法provide/inject

    这篇文章主要介绍了详解Vue 多级组件透传新方法provide/inject,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • vue项目本地开发完成后部署到服务器后报404错误解决方案

    vue项目本地开发完成后部署到服务器后报404错误解决方案

    很多时候我们发现辛辛苦苦写的VueJs应用经过打包后在自己本地搭建的服务器上测试没有什么问题,但真正放在服务器上后会发现或多或少的问题,这篇文章主要给大家介绍了关于vue项目本地开发完成后部署到服务器后报404错误的解决方案,需要的朋友可以参考下
    2024-01-01
  • vue3 关于reactive的重置问题及解决

    vue3 关于reactive的重置问题及解决

    这篇文章主要介绍了vue3 关于reactive的重置问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • keep-alive保持组件状态的方法

    keep-alive保持组件状态的方法

    这篇文章主要介绍了keep-alive保持组件状态的方法,帮助大家更好的理解和学习vue框架,感兴趣的朋友可以了解下
    2020-12-12

最新评论