解决Vue中动态渲染图片路径报错问题

今天在做项目的时候在本地assets中后动态渲染加载图片,死活加载不出来,F12控制台提示图片存在路径错误,但是不使用动态渲染,一模一样的路径,就可以渲染出来,就很神奇。

        

代码如下,可以看见动态渲染的地址直接写的地址一模一样,但就是渲染不出来。

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png" />
    <img alt="Vue logo" :src="url" />
    <HelloWorld />
  </div>
</template>

<script>
import HelloWorld from "./components/HelloWorld.vue";

export default {
  name: "App",
  components: {
    HelloWorld,
  },
  data() {
    return {
      url: "./assets/logo.png",
    };
  },
};
</script>

其实原因就在于放置在 public 目录下或通过绝对路径被引用。这类资源将会直接被拷贝,而不会经过 webpack 的处理。可在Vue CLI官网看出:

其中说到了直接路径<img alt="Vue logo" src="./assets/logo.png" />会编译为 require('./image.png')

所以通过动态渲染不能直接写 

data() {
    return {
      url: "./assets/logo.png",
    };
  },

必须写上require

data() {
    return {
      url: require("./assets/logo.png"),
    };
  },

这样图片就能成功渲染了,不在出现路径错误。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识海.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值