我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue-cli项目中img如何使用require动态获取图片

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue-cli项目中img如何使用require动态获取图片

vue-cli中img使用require动态获取图片

做图片渲染模块时,可能涉及到需要循环渲染的问题,这个时候需要使用require,具体就看下面?????

动态获取图片地址,路径被加载器解析为字符串,图片找不到

这里在motheds 中定义了个方法获取

这样就可以了。。。。。

vue-cli中图片显示问题

在基于vue-cli实际开发过程中,经常遇到关于图片显示的困扰,不管怎么设置,图片就是显示不出来,今天就来简单说一下这个问题

实际开发环境中使用图片最多的场景有以下三种:

1.手动引入

<template>
  <img :class="lazy" data-src="imgurl" />
</template>
<script>
import logo from "../img/logo.png";
// 或
const logo = require("../img/logo.png");
export default {
  data() {
    return {
      imgurl: logo,
    };
  },
};
</script>

【注意:使用require或import方式引入图片时,引入路径是相对于当前文件路径的,编译时webpack会介入并把路径处理成服务器绝路径】

2.相对路径

<img class="lazy" data-src="../img/logo.png" />

在 vue-cli 中使用相对路径时,webpack 会自动介入,上面的代码在编译时自动变成

<img class="lazy" data-src="require('../img/logo.png')"/>

3.绝对路径

<img class="lazy" data-src="/img/logo.png" />

使用绝对路径,首先要了解服务器根目录在哪,大家都知道,在vue-cli的项目本身自带一个服务器的,基于webpack-dev-server模块,根目录为public文件夹,所以,使用绝对路径的方式展示图片,必须把图片放到public文件夹,这也是最简单的一种方式,这种方式webpack不会介入,所以最终显示效果与引入时的代码一致,代码如下:

const logo = require('../assets/logo.png');
<img class="lazy" data-src="/img/logo.png" />
<img class="lazy" data-src="../assets/logo.png" />
<img :class="lazy" data-src="logo" />

效果如下:

4.数据data中的图片

<template>
  <ul>
    <li><img :class="lazy" data-src="item.imgurl" v-for="item in goodslist" /></li>
  </ul>
</template>
<script>
export default {
  data() {
    return {
      goodslist: [
        { name: "goods1", imgurl: "../img/goods1.png" },
        { name: "goods2", imgurl: "../img/goods2.png" },
        { name: "goods3", imgurl: "../img/goods3.png" },
      ],
    };
  },
};
</script>

这种情况应该是最常见的(ajax请求数据回来,然后遍历写入到页面结构中),这个时候绑定到class="lazy" data-src属性的是一个变量,无法直接手动import或require,如果直接使用imgurl属性中的路径,webpack不会介入处理,所以以上代码是无法正常显示图片的【当然首先图片是没有防盗链的】,解决方法如下:

解决方法一

this.goodslist = this.goodslist.map(item=>{
//虽然路径是正确的,但以下方式引入会报`Cannot find module '../assets/logo.png'`
// item.imgurl = require(item.imgurl); 
// 正确的方式为 
item.imgurl=require('../img'+item.imgurl.replace('../img','')) return item; })

遍历数据,使用前先手动 require

解决方法二

在数据库端直接使用绝对路径,并把所需图片放到 public目录中

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue-cli项目中img如何使用require动态获取图片

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue项目中如何使用vue-cropper做图片裁剪

这篇文章主要介绍了vue项目中如何使用vue-cropper做图片裁剪的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue项目中如何使用vue-cropper做图片裁剪文章都会有所收获,下面我们一起来看看吧。一
2023-07-04

vue中如何使用echarts实现动态数据绑定及获取后端接口数据

本篇内容主要讲解“vue中如何使用echarts实现动态数据绑定及获取后端接口数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue中如何使用echarts实现动态数据绑定及获取后端接口数据”
2023-07-02

在java项目中使用线程池如何实现获取运行线程数并控制线程启动速度

这期内容当中小编将会给大家带来有关在java项目中使用线程池如何实现获取运行线程数并控制线程启动速度,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在java里, 我们可以使用Executors.newFi
2023-05-31

编程热搜

目录