VUE:如何自动导入文件夹中的所有图像?

问题描述 投票:0回答:2

我尝试自动导入文件夹中的所有图像。在//测试下是我尝试过的:

<template>
  <p>classical art</p>
  <img v-for="image in images" :key="image" :src="image.url" :alt="image.alt" />
</template>

<script>
export default {
  data: function () {
    return {
      name: "classical-art",
      images: [
        { url: require("../assets/images/classical-art/img-00001.jpg"), alt: "první" },
        { url: require("../assets/images/classical-art/img-00002.jpg"), alt: "druhý" },
      ],
    };
  },
};

// tested
const classicalArt = require(`../assets/images/classical-art/.jpg`)

classicalArt.forEach((image) => {
    return image;
});
</script>

<style module lang="scss"></style>

我不擅长这件事,所以我需要帮助。可能我只是愚蠢,但我无法让它发挥作用。如果可能的话,我希望它是异步的(惰性的)或者其他什么。

-----更新:

我尝试了类似的方法,但仍然一无所获,但是使用 require.context 我应该能够做到这一点:

<template>
  <p>classical art</p>
  <img :src="getImgUrl()" v-bind:alt="req" />
</template>

<script>
export default {
  data: function () {
    return {
      name: "classical-art",
    };
  },
  methods: {
    getImgUrl() {
      var req = require.context(
        "../assets/images/classical-art/",
        false,
        /\*.jpg$/
      );
      req.keys().forEach(function (key) {
        req(key);
      });
    },
  },
};
</script>

<style module lang="scss"></style>

我希望当我向 classic-art 文件夹添加另一个图像时自动创建一个新标签并显示图像,而无需编辑代码并手动注册它

有人可以帮我吗?

javascript vue.js vue-cli
2个回答
0
投票

对于图像渲染,您必须指示每个图像的确切 url,因此您必须以正确的方式手动输入每个 url。

顺便说一句,你的想法可以用 NodeJS 实现。节点运行时可以访问文件系统,因此可以为每个文件自动创建 url 字符串。

不幸的是,Vue 无法真正访问您的文件,这意味着您的每个组件、文件或图像都必须手动导入。


0
投票

你可以试试

export default {
    methods: {
        getImgUrl() {
            const arr = []; 
            var req = require.context(
                "../assets/images/classical-art/",
                false,
                /\*.jpg$/
            );
            req.keys().forEach(function (key) {
                arr.push(req(key))
            });
            return arr;
       },
    },
};
© www.soinside.com 2019 - 2024. All rights reserved.