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

 更新时间:2022年09月01日 08:51:53   作者:余人于RenYu  
这篇文章主要介绍了vue-cli项目中img如何使用require动态获取图片,具有很好的参考价值,希望对大家有所帮助。

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

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

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

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

这样就可以了。。。。。

vue-cli中图片显示问题

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

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

1.手动引入

<template>
  <img :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 src="../img/logo.png" />

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

<img src="require('../img/logo.png')"/>

3.绝对路径

<img src="/img/logo.png" />

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

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

效果如下:

4.数据data中的图片

<template>
  <ul>
    <li><img :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请求数据回来,然后遍历写入到页面结构中),这个时候绑定到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目录中

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

相关文章

  • 一文搞懂Vue里的过渡和动画

    一文搞懂Vue里的过渡和动画

    在Vue中,过渡和动画是一种用于在组件之间添加平滑过渡效果和动画效果的高级用法,Vue提供了一些内置的过渡和动画功能,同时也支持自定义过渡和动画效果,本文就给大家介绍一些Vue中过渡和动画的高级用法,需要的朋友可以参考下
    2023-06-06
  • Vue.js每天必学之内部响应式原理探究

    Vue.js每天必学之内部响应式原理探究

    Vue.js每天必学之内部响应式原理探究,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • vue项目实现添加图片裁剪组件

    vue项目实现添加图片裁剪组件

    这篇文章主要为大家详细介绍了vue项目实现添加图片裁剪组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 解决Element组件的坑:抽屉drawer和弹窗dialog

    解决Element组件的坑:抽屉drawer和弹窗dialog

    这篇文章主要介绍了解决Element组件的坑:抽屉drawer和弹窗dialog问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • vue3父子传值实现弹框功能的示例详解

    vue3父子传值实现弹框功能的示例详解

    这篇文章主要为大家详细介绍了vue3如何利用父子传值实现弹框功能,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • vue+jsplumb实现工作流程图的项目实践

    vue+jsplumb实现工作流程图的项目实践

    本文主要介绍了vue+jsplumb实现工作流程图的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例

    vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例

    这篇文章主要介绍了vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • vue-seamless-scroll无缝滚动组件使用方法详解

    vue-seamless-scroll无缝滚动组件使用方法详解

    这篇文章主要为大家详细介绍了vue-seamless-scroll无缝滚动组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • element-ui多选表格禁用某一行不被选择问题

    element-ui多选表格禁用某一行不被选择问题

    这篇文章主要介绍了element-ui多选表格禁用某一行不被选择问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue的路由映射问题及解决方案

    vue的路由映射问题及解决方案

    这篇文章主要介绍了vue的路由映射问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论