react+ts 使用webp格式的图片处理

需求:

公司官网大图内存较大加载很慢,于是用webp格式的图片来替换原来的图片,在React项目中,如果你使用的是Create React App(CRA)或Webpack进行项目构建,遇到的常见错误原因可能涉及以下几点:

1.路径问题:使用require和相对路径需要确保路径正确且文件存在。

2.文件扩展名支持:确保项目配置正确支持特定格式的文件(如.webp)。

3.静态资源引用:有时使用require引入图片在现代React代码中通常会使用import语法。

我们逐一来看看可能的解决方法:
解决方法1:检查路径是否正确

确保我们的文件路径@/assets/images是正确的。例如,@符号通常是路径别名,需要确保webpack.config.js或者适用的配置文件有正确的别名设置。
解决方法2:使用import语法

通常我们会使用ES6的import语法来引入图片:

javascript 复制代码
import React from 'react';
import { animated } from 'some-animation-library';
import animateBg from './path-to-animateBg';
import bgImage from '@/assets/images/bg/bg_xx.webp'; // 使用实际可用的别名或相对路径

const MyComponent = () => {
  return (
    <animated.img
      src={bgImage}
      alt="背景"
      className="first-item__img"
      style={animateBg}
    />
  );
};

export default MyComponent;

解决方法3:配置WebPack支持.webp文件

使用了新的文件格式如.webp,一定要确保Webpack配置文件支持这种格式:

先查看package.json文件是否存在url-loader,如果没有就使用命令:

npm install --save url-loader

如果有的话就在webpack.config.js的配置添加

javascript 复制代码
 module: {
    rules: [
      {
          test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/, /\.webp$/],
          loader: require.resolve("url-loader"),
          options: {
             limit: imageInlineSizeLimit,
             name: "static/media/[name].[hash:8].[ext]"
             }
            },
      // 其他 loader规则 ...
    ],
  },
相关推荐
Nan_Shu_6142 分钟前
学习: Threejs (2)
前端·javascript·学习
G_G#10 分钟前
纯前端js插件实现同一浏览器控制只允许打开一个标签,处理session变更问题
前端·javascript·浏览器标签页通信·只允许一个标签页
@大迁世界26 分钟前
TypeScript 的本质并非类型,而是信任
开发语言·前端·javascript·typescript·ecmascript
GIS之路34 分钟前
GDAL 实现矢量裁剪
前端·python·信息可视化
是一个Bug38 分钟前
后端开发者视角的前端开发面试题清单(50道)
前端
Amumu1213840 分钟前
React面向组件编程
开发语言·前端·javascript
持续升级打怪中1 小时前
Vue3 中虚拟滚动与分页加载的实现原理与实践
前端·性能优化
GIS之路1 小时前
GDAL 实现矢量合并
前端
hxjhnct1 小时前
React useContext的缺陷
前端·react.js·前端框架
前端 贾公子2 小时前
从入门到实践:前端 Monorepo 工程化实战(4)
前端