【发布时间】:2016-08-30 19:54:23
【问题描述】:
我正在使用带有 react 的 webpack,我通常会这样导入和使用我的图像:
import CalNotices from 'assets/img/calendar-notices.png';
<img className='img-center' role='presentation' src={CalNotices}/>
效果很好,当我进行生产构建时,这些图像区域整齐地放入适当的文件夹中。
但是,有时,我想将图像用作背景,并像这样使用它:
const divStyle = {
backgroundImage: `url(${item.logo})`,
backgroundSize: 'contain',
backgroundRepeat: 'no-repeat',
backgroundPosition: 'center'
}
<div className='image-holder' style={divStyle}></div>
其中 item.logo 是图像的绝对路径。
这在开发中运行良好,但是当我进行产品构建时,这些图像显然丢失了,因为它们没有被 webpack 图像加载器拾取。我应该如何处理?
我的图片加载器配置是
{
test: /\.(jpg|png|gif|eot|svg|ttf|woff|woff2)(\?.*)?$/,
include: [paths.appSrc, paths.appNodeModules],
loader: 'file',
query: {
name: 'static/media/[name].[ext]'
}
},
【问题讨论】:
-
item是如何定义的? -
我的意思是说,这一切都是一样的。您可以将您的 divStyle 设置为
backgroundImage: 'url(${CalNotices})',这样就可以正常工作并像平常一样捆绑在一起。您填充item.logo的方式可能会绕过 webpack。 -
@Brandon item 是一个包含属性 logo 的对象,它保存到背景图像的绝对路径。该图像永远不会通过 import 'path to image" 声明导入,因为它可以是任何路径。
-
如果不通过webpack导入,那么webpack如何捆绑呢? Webpack 通过以下 import 语句捆绑资产。
-
但是如果我不知道它的路径并且它可以是任何东西,我该如何导入它? src来自动态json
标签: node.js reactjs webpack webpack-dev-server