【问题标题】:Import a folder of images导入图像文件夹
【发布时间】:2021-01-06 17:50:02
【问题描述】:

我有一个 Svelte+Sapper 项目,它工作得很好:

import logotype from 'images/logo_vertical.svg';

[..]

<img src={logotype} alt="..." />

但是是否可以像这样导入整个文件夹:

import logotypes from 'images/logotypes';

.. 并像这样使用它们:

<img src={logotypes.logo1} alt="..." />

或

<img src={logotypes['logo1.svg']} alt="..." />

我尝试过像这样导入,但它不起作用,因为它正在寻找一个模块而不是一组图像:import logotypes from 'images/logotypes';

'images/logotypes' 由 ....svelte 导入,但无法导入 已解决 - 将其视为外部依赖项

在运行时...

错误:找不到模块“图像/标识”

【问题讨论】:

标签: javascript svelte sapper


【解决方案1】:

按照您的想法 Julio Malves,这就是我想出的(在 file/images/logos/index.js 中):

import logo1 from './logo_1.svg'
import logo2 from './logo_2.svg'
import logo3 from './logo_3.svg'
import logo4 from './logo_4.svg'
import logo5 from './logo_5.svg'
import logo6 from './logo_6.svg'

export default {
    logo1,
    logo2,
    logo3,
    logo4,
    logo5,
    logo6,
}

像这样使用它;

import logos from 'images/logos'

[..]

<img src="{logos.logo1}" alt="[..] />

【讨论】:

  • 我认为这是最好的解决方案。这可以通过使用 Node 脚本生成此代码来自动化(可能会很花哨,在文件夹和所有文件上都有一个文件观察器)。这也可以通过捆绑插件进一步自动化,以检测您正在尝试导入文件夹,但这似乎不是一个好主意——这会使您的构建设置变得脆弱,并有可能发生冲突(与 index.html 文件)。 js 的文件夹,你怎么知道当你试图导入一个文件夹时,那是为了图像?)。我认为你应该接受这个答案。
  • 如果我有数百个资源,我可能会自动化它,但现在这可行,感谢您确认解决方案,如果没有人提出更好的解决方案,我会接受这是最好的解决方案。
猜你喜欢
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多