javascript - 如何在 ReactJS 应用程序中使用多个图像?
问题描述
我有一个 ReactJS 应用程序。我有 100 张国旗图片(图标)。我需要在我的应用程序中使用它们。我有 2 种方法可以做到这一点,想知道这样做的最佳方法 - 1)我只需要进行 1 次 hhtp 调用即可获取图像 2)这是处理这种情况的最佳方法。
方法 1 - 我可以精灵化所有 100 张图像。然后进行 1 次 http 调用以获取图像并利用背景位置来获取正确的图像。在这种方法中,我想知道 a) 如果使用 CSS Sprites 是现代的方式吗?有更好的办法吗?b) 如果使用 CSS sprites,有什么工具可以创建 Sprite 图像并获得正确的位置值?
方法 2 - 在我的项目中,目前所有图像都在 /src/images 文件夹中。如果我将 100 张图片放在这个文件夹中,它将进行 100 次 http 调用。如果我错了,请纠正我。我可以将它们放在 /public/images 文件夹中,以便捆绑图像并且不会进行过多的 http 调用吗?(如果我引用公用文件夹中的任何图像文件,我会收到错误消息 - '不支持 src/ 之外的相对导入。')无论如何,您通常将图像放在 /src/images 或 /public/images 内的什么位置?两者都有什么优势?
解决方案
由于图像的使用量如此之大,我建议您使用选项 2延迟加载图像。
假设您的网页上有 100 种产品。如果您在一开始就同时请求所有 100 张产品图片,则会减慢加载时间。使用延迟加载,我们只会加载,比如说,最初对用户可见的 30 张图像。然后,当用户开始向下滚动页面时,我们将继续加载更多图像。这将有助于改善初始加载时间和用户体验。在某些情况下,用户不会向下滚动整个页面,因此根本不会加载某些图像。因此,您最终还可以节省图像传输的带宽成本。
由于您使用的是 reactjs,因此有许多可用的软件包。在这里我会推荐其中一个,但可以随意探索更多:React-Lazyload
您甚至可以通过一些CDN交付图像以进一步加快加载速度。此外,将它们调整为实际需要的大小是一个好方法。此外,您还可以使用以 80-90 质量编码的 JPG,因为它不会对图像质量产生太大影响,但会显着减小文件大小。
推荐阅读
- angular - 如何自定义 ng-bootstrap 警报
- java - 保存数据和转移到另一个活动时出现问题(使用 FireBase)
- javascript - 如何选择使用 puppeteer 和 mocha 点击后显示的元素(如弹出框)?
- sql - 将 Oracle 日期转换为 RFC 3339 格式
- javascript - I'm making a flashcard game but the "Next" button won't work
- sql - 如何在 SQL 中进行透视以实现多级标题
- excel - Excel 趋势线的斜率可以用来衡量变化吗?
- google-apps-script - 如何从 HTML 文件输入中获取文件并将其作为附件发送到 Google Apps 脚本中的电子邮件?
- r - 打印所有小时:分钟从 00:00 到 23:59
- python - Python 请求:无法获取 post cookie