繁体   English   中英

无法在vue中显示图片

[英]Can't display image in vue

我使用这个组件 SideMenu 来显示其他 SideMenuButton 组件,但是图像没有显示

侧边菜单:

<template>
    <div id = "side-menu">
        ciao
        <SideMenuButton imgPath="../assets/lens.png"/>
    </div>
</template>

<script>
import SideMenuButton from './SideMenuButton.vue'

export default {
    name: "SideMenu",
    components:{
        SideMenuButton
    }
}
</script>

侧边菜单按钮:

<template>
    <div>
        <img v-bind:src="imgPath">
    </div>
</template>

<script>
export default {
    name: "SideMenuButton",
    props:{
        imgPath: String,
    }
}
</script>

你需要像这样使用资产资源

<img src="@/assets/lens.png"/>

将图像作为道具传递并在孩子中使用 img 的require

侧边菜单:

<template>
        <div id = "side-menu">
            ciao
            <SideMenuButton image="lens.png"/>
        </div>
    </template>
    

侧边菜单按钮:

<template>
    <div>
       <img :src="require(`@/assets/${image}`)">

    </div>
</template>

<script>
export default {
    name: "SideMenuButton",
    props:{
        image: String,
    }
}
</script>

这种方法的问题在于, vue在后台使用 webpack 将所需资源(以及图像)捆绑到dist/目录中。 (简单的说)
这发生在buildtime

但是图像路径是一个变量,所以它可以在运行时改变。 Webpack 无法再确定图像。

<template>
  <div id="side-menu">
    ciao
    <SideMenuButton imgPath="imgPath"/>
  </div>
</template>

<script>
import SideMenuButton from './SideMenuButton.vue'

export default {
  name: 'SideMenu',
  components: {
    SideMenuButton
  },
  computed: {
    imgPath () {
      // webpack will replace the given path to import() with the actual "production" image path
      return import('../assets/lens.png')
    }
  }
}
</script>

您可能必须在应用程序的某个位置一次import()所有图像,以便 webpack 可以在构建时包含它们。

如果您想进一步阅读此主题:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM