当前位置: 首页 > 编程笔记 >

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

温凯
2023-03-14
本文向大家介绍Vue中img的src属性绑定与static文件夹实例,包括了Vue中img的src属性绑定与static文件夹实例的使用技巧和注意事项,需要的朋友参考一下

不少人在vue的开发中遇到这样一个问题: img的src属性绑定url变量,然而图片加载失败。

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

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

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

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

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

例如,有下面一个文件结构:


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

imgUrl = './assets/logo.png'

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

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

既然这样,那我们去找build后的dist文件夹。发现文件的结构是这样:

是不是说只要把url改成./static/img/logo.png就可以了呢?依然是不行的。打开img文件夹我们可以发现,所有的文件名后都被添加上了一个随机字符串,原始的文件名已经无法对应了。

那么,到底应该怎么加载本地图片呢?回头看vue-cli的文件结构,发现其中有一个叫做static的文件夹,尝试将logo.png放入这个文件夹,然后修改imgUrl:

imgUrl = '/static/logo.png'

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

原来,之前的目录结构是有问题的,图片一类的静态文件,应该放在这个static文件夹下,这个文件夹下的文件(夹)会按照原本的结构放在网站根目录下。这时我们再去使用/static绝对路径,就可以访问这些静态文件了。

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

imgUrl = require('./assets/logo.png')

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 我在一个Vue项目上工作,实际上我试图将img src属性绑定到数据值,然后我使用setInterval函数动态更改url每次调用函数,但当我运行页面时,我得到一个错误就像 属性或方法“源”不是在实例上定义的,而是在呈现过程中引用的。通过初始化属性,确保此属性是反应性的,无论是在数据选项中,还是对于基于类的组件。见:https://vuejs.org/v2/guide/reactivity.htm

  • 我想从图像(即img)标签中提取源(即src)属性,我使用bs4,我不能使用来获取,但是我可以获取。我该怎么办?

  • 问题内容: 我正在尝试从软件包中的src /文件夹中获取图像,但是没有成功。 有人建议吗? 问题答案: 是否将其复制到构建代码的任何地方?作为一个在目录没有帮助,如果在执行时类是在目录(或jar文件)。 另请注意,如果您的课程在一个包中,则默认情况下它将相对于该包起作用。因此,如果您的包是foo.bar,它将在寻找。如果要使其绝对,则可以使用,也可以在字符串的开头放置前导: 要么 当然,如果目录

  • 我有一个spring boot应用程序,我想在其中外部化消息。我将这些消息分为错误、信息和成功。因此,我创建了如下所示的嵌套文件夹结构: 并且,我正试图通过以下方式从服务中访问它: 这给了我以下例外情况: missingResourceException:找不到bundle的基本名称错误,区域设置为 但是,如果我将属性文件保存在下面的文件夹之外,它可以正常工作: null

  • 我试图从json文件中获取img src属性,但没有显示图像,也没有显示替代文本。我确信这些图像在src/assets目录中找到,它们的名称是正确的。 这是组件: 以及以下观点: projects.json文件: 那么我的错误在哪里?

  • 我试图通过使用src属性的props路径来显示带有img标记的图像。 我试着用更改路径,用使用整个路径,在组件中添加,并且只传递文件名()作为道具。我总是显示默认的断开图像。在浏览器中检查时,路径看起来很好。当我直接显示图像时,我可以看到路径被解析为不同的路径