使用 vue-cli 加载静态资源 3.x

Load static assets with vue-cli 3.x

我有一个具有以下目录结构的 vue-cli 3 项目设置:

所有静态资源都加载到public目录,并在localhost上编译构建成功。

如下图所示,guyana-live-logo.pngslide-1.jpg970x250-ad.png都加载成功,但是在浏览器中只出现logo和广告图片。

我试过的

  1. 更改引用图像的方式。

原始 - 适用于几乎所有其他图像

<img src="/img/slide-1.jpg"/>

测试 0 - 这加载了图像并附加了哈希值(幻灯片 1。1b0ahsa.jpg)但它仍然没有出现在浏览器中

<img src="../../../public/img/slides/slide-1.jpg">

测试 1 - 使用 v-bind

<img :src="'/img/slide-1.jpg'"/>
  1. 将图像移动到 src 目录和组件子目录中 两者都被证明是徒劳的。

  2. 正在更新 vue-loader

  3. 为生产构建并仅提供 /dist 文件夹

要点

图像需要位于您尝试访问它们的文件的同一目录或子目录中(即在 Components 目录中)。

您是否也可以尝试通过 URL <img src="http://localhost:8080/img/guyana-live-logo.png" /> 访问图像?

这应该可行,但您可能不希望以这种方式使用它。

您可以使用的另一种可能性是:

<script>
import image from './img/slide-1.jpg'
...

然后在 Vue 中 data:

  data() {
    return {
      img: image,
    };

  },

然后在你的 HTML:

<img :src="image"/>

这解决了在使用 Parcel Bundler 构建时尝试访问图像时出现的问题