vue项目中img动态导入的问题

相信有些人应该都会遇到vue项目中动态加载图片的问题。就是觉得路径没有问题,但是还是报错。

错误代码template:

<el-card v-for="(o,s_i) in styleList" :key="s_i">
            <div><img style="width: 100%; height: 100px" :src="o.url" fit="cover" :alt="o.name"></div>
            <span>{{ o.name }}</span>
</el-card>

script:

data(){
    return{
        styleList:[
    {
          name: '风格1',
          url: '@/assets/home/111.jpg'
        },
  {
          name: '风格2',
          url: '@/assets/home/222.jpg'
        },
]
    }
}

其实这样肯定是会报错的,因为webpack会将图片当模块使用。但是因为上面图片是动态加载的,所以url-loader无法解析图片路径,执行npm run dev或者npm run build之后导致路径没有被加工。

解决思路:将图片作为模块加载进去,这样webpack将能将它解析,或者将资源放在static目录下。

解决办法一:

<script>
import img1 from '../assets/home/1.png'
import img2 from '../assets/home/2.png'
import img3 from '../assets/home/3.png'

export default {
  data () {
    return {
      style: [
    {
          name: '风格1',
          url: img1
        },
        {
          name: '风格2',
          url:img2
        },
      ]
    }
  }
}
</script>

解决办法二:

<script>
export default {
  data () {
    return {
      style: [
    {
          name: '风格1',
          url: require('../assets/home/111.png')
        },
        {
          name: '风格2',
          url: require('@/assets/home/222.png')
        },
      ]
    }
  }
}
</script>

 

posted @ 2023-02-22 12:42  麦兜家园  阅读(187)  评论(0编辑  收藏  举报