我是否将图像资源存储在公共或reactJS中的src中?

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

我正在为我的应用程序使用 React。我有一个

div
,我想要一个背景图像。但我无法让它显示。

当我将它作为

src
包含在
myapp/src/bgimage.png
文件夹中时,它工作得很好,但我听说我应该将它包含在根级别名为
images
的文件夹中,这样它就是
myapp/images/bgimage.png
,但这不起作用为我并给我:

您尝试导入位于项目 src/ 目录之外的 ../images/bgimage.png。”

谁能告诉我在reactJS中包含图像资源的正确方法?

reactjs
9个回答
181
投票

public:应用程序编译时未使用的任何内容

src:编译应用程序时使用的任何内容

例如,如果您在组件内使用图像,则它应该位于 src 文件夹中,但如果您在应用程序外部有图像(即 favicon),则它应该位于公共文件夹中。


56
投票

我想补充一点,在“src”文件夹中创建一个“assets”文件夹是一个很好的做法。


33
投票

如果您正在使用
/src
,请使用 
create-react-app


如果您正在使用

create-react-app
,您需要使用
/src
才能获得以下好处

  1. 脚本和样式表被缩小并捆绑在一起,以避免额外的网络请求。
  2. 丢失文件会给您的用户带来编译错误而不是 404 错误。
  3. 结果文件名包含内容哈希,因此您无需担心浏览器缓存其旧版本。

此外,如果您无论如何都使用 webpack 的资源捆绑,那么您在

/src
中的文件将被重建。

您可以在 src 内创建子目录。为了更快地重建,webpack 仅处理 src 内的文件。您需要将任何 JS 和 CSS 文件放入 src 中,否则 webpack 将看不到它们。

看这个链接


13
投票

不,

public 文件夹用于存放静态文件,例如index.html 和...

我认为你应该在 src 文件夹中创建一个“assets”文件夹 并以这种方式访问它们。


11
投票

根据create-react-app文档,关于public文件夹的使用:

通常我们建议从 JavaScript 导入样式表、图像和字体。公用文件夹对于许多不太常见的情况来说是有用的解决方法:

  • 您需要在构建输出中具有特定名称的文件,例如manifest.webmanifest。
  • 您有数千张图像,需要动态引用它们的路径。
  • 您想在捆绑代码之外包含一个小脚本,例如pace.js。
  • 某些库可能与 webpack 不兼容,您别无选择,只能将其包含为标签。

10
投票

在这篇文章中,我提到过

保留包含顶级 CSS、图像和字体文件的资产文件夹。

在 React 最佳实践中,我们在 src 中保留一个 asset 文件夹,其中可能包含顶级 CSS、图像和字体文件。


6
投票

继续其他答案,我想进一步补充一点,您应该在“src”文件夹下创建一个“assets”文件夹,然后在“assets”文件夹下创建“images”文件夹。您可以将图像存储在“图像”文件夹中,然后从那里访问它们。


1
投票

根据我的理解,我会采用更简单的方法。如果您使用公共文件夹中的资源,则构建后公共文件夹中的内容将保持不变。因此,如果您部署应用程序,则在加载应用程序时也会加载公共文件夹中的内容。假设您的构建大小为 5 MB(4 MB 资源和 1 MB src),则将首先下载 4 MB,然后下载 src 包含的内容。即使您使用惰性和悬念,您的应用程序在部署过程中也会很慢。


0
投票

public
src/assets
文件夹之间的区别:

  • public
    文件夹用于存放导入到
    index.html
  • 中的所有内容
  • src/assets
    文件夹用于存放在
    js/ts/jsx/tsx/...etc... files
    文件夹中导入的所有内容。
    
    
  • 引用
src

文件夹中的文件的示例
public

引用 
<!-- index.html --> <head> <link rel="manifest" href="/manifest.json"> <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> </head>

文件夹中的文件的示例
src/assets

© www.soinside.com 2019 - 2024. All rights reserved.