加载javascript时如何在vue组件中引用javascript中的img

Posted

技术标签:

【中文标题】加载javascript时如何在vue组件中引用javascript中的img【英文标题】:How to reference img in javascript in a vue component when it is loaded with javascript 【发布时间】:2020-02-08 21:44:51 【问题描述】:

文件结构(Webpack)

src
-assets
--img
---myimage.png
-vue
--page
---parent.vue
---component
----child.vue

parent.vue :这里我尝试了src 相对于这个组件和相对于实际加载图像的子组件。

/** This data is passed to the child component in a loop */
data()
  return
    items: [
       id: 1, src: '../../../assets/img/myImage.png',
      more items...
    ]
  

child.vue :我在控制台中收到以下错误:挂载钩子错误:“错误:找不到模块'../../../assets/img /myImage.png'"

props: 
  item: 
      type: Object,
      required: true
  
,
mounted() 
  let element = this.$refs['myelement'];
  let img = new Image();

  img.onload = function()
      element.insertBefore(this, element.firstChild);
  
  img.src = require(this.item.src);
,

我已经为 src 尝试了所有可能的组合,我什至复制了组件目录中的图像文件并像 myImage.png./myImage.png 一样引用它,但出现了同样的错误。 怎么回事?

【问题讨论】:

【参考方案1】:

当 webpack 构建时,无论放在 src/assets 中的任何图像都移动到 static/img/imagename 中

尝试使用 localhost:8080/static/img/imagename.png 等 URL 直接从浏览器访问这些图像

如果可以访问,则仅使用图像文件名重写数组并添加 /static/img

【讨论】:

不,没有用。这确实有效:http://localhost:8080/src/assets/img/myImage.png 它不会以这种方式工作。在 webpack 中捆绑后,所有资产都被移动到静态文件夹中。您可以通过localhost/static/img/myImage.png 从那里访问 这就是问题所在,我无法捆绑它,我得到错误:挂载钩子中的错误:“错误:找不到模块'../../../assets/img/ myImage.png'"

以上是关于加载javascript时如何在vue组件中引用javascript中的img的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 React Hook 在 React 组件中引用和加载 Javascript 文件

仅在加载元素时运行 vue 组件

vue引用百度地图时遇到的问题总结

vue自定义全局loading加载组件

Vue 插槽在插槽 v-if 语句启动之前加载异步组件

vue 异步组件