在 React 应用程序中存储图像的位置
Where to store images in a React application
您应该将图像存储在靠近它们在 React 应用程序中使用的位置。例如,如果您有一个Contacts.js
使用
contact.png
图像的组件,请将图像存储在文件旁边Contacts.js
。
另一方面,您没有在组件中导入的图像,例如
favicons
应该存储在该public
目录中。
假设我们有以下文件夹结构。
壳
src/ pages/ contacts/ Contacts.js index.js contacts.webp
请注意,该contacts.webp
图像紧挨着Contacts.js
使用它的文件放置。
src/pages/contacts/Contacts.js
import ContactsIcon from './contacts.webp'; export function Contacts() { return ( <div> <h2>Contacts</h2> <img src={ContactsIcon} alt="contacts" /> </div> ); }
将图像放置在靠近使用它们的地方有多个优点:
- 如果我们
img
从组件中删除标签,我们知道我们可以安全地删除图像,因为它没有在我们应用程序的其他任何地方使用 - 简单的导入语句 – 所有相互交互的文件都彼此靠近,因此我们可以从同一目录导入
- 如果图像被错误地删除,我们会得到构建时错误,因为导入语句会失败,而不是在不知不觉中损坏图像(从
public/
目录中引用)。
如果contacts.webp
图像也在另一个组件中使用,我会将图像移动到单独的目录中。
壳
src/ pages/ contacts/ Contacts.js index.js about/ About.js index.js images/ contacts.webp
现在我将从和images/contacts.webp
中
导入图像。Contacts.js
About.js
src/pages/contacts/Contacts.js
import ContactsIcon from '../../images/contacts.webp'; export function Contacts() { return ( <div> <h2>Contacts</h2> <img src={ContactsIcon} alt="contacts" /> </div> ); }
如果我最终<img />
从其中一个组件中删除引用图像的标签,那么我会将图像移到使用它的唯一组件旁边。
检查图像是否在您的任何组件中使用的一种简单方法是
CTRL + Shift + F
在您的 IDE 中查找contacts.webp
.您的 IDE 应该能够向您显示contacts.webp
项目中的所有引用。
您不直接导入组件中的任何图像都应放在该
public/
文件夹中。您可以在您的文件夹中创建一个images/
或favicons/
目录,用于public/
存储您的网站图标、站点徽标或您不打算导入任何组件的任何其他类型的图像。
壳
public/ favicons/ favicon-16x16.png favicon-32x32.png android-chrome-192x192.png apple-touch-icon.png index.html
如果必须,请确保更新文件中指向您的
favicons
路径。 index.html
你应该避免public/
在你的 React 组件中使用目录中的图像,因为它们是在没有导入的情况下使用的。
例如,如果您有一个位于 的图像public/images/thumbnail.webp
,您可以将src
img 的 设置为"/images/thumbnail.webp"
。
应用程序.js
export default function App() { return ( <div> {/* 👇️ local image */} <img src="/images/thumbnail.webp" alt="horse" /> </div> ); }
如果这些图像最终被移动或删除,你会在不知情的情况下在你的 React 应用程序中损坏图像。
另一方面,如果您显式导入图像,如果导入语句失败,您将在构建时收到错误。
简而言之:
- 您在 React 组件中导入的任何图像都应存储在靠近使用它们的位置(最好在同一目录中)。
- 任何你没有在你的 React 组件中导入的图像(例如
favicons
)应该存储在你的public/
目录中,例如在一个favicons/
文件夹下。