当前位置: 首页 > news >正文

NextJS开发:Image组件的使用及缺陷

Next.js 中的 Image 组件相比于传统的 img 标签有以下几个优点:

懒加载:Image 组件自带懒加载,当页面滚动到 Image 组件所在位置时才会加载图片,从而加快页面的渲染速度。自动优化:Image 组件会自动将图片压缩、转换格式、调整大小,以达到更好的性能和用户体验。支持多种图片源:Image 组件支持使用本地文件、远程 URL、云存储等多种方式来加载图片,更加灵活方便。支持响应式图片:Image 组件可以根据不同设备屏幕大小来加载不同分辨率的图片,以达到最佳的视觉效果和性能表现。此外,Image 组件还可以使用 layout 属性来控制图片的布局方式,包括填充、响应式、不变形等多种方式。

总之,Next.js 中的 Image 组件在性能、用户体验、开发效率等方面都优于传统的 img 标签,因此在开发过程中应当优先考虑使用 Image 组件。

<Image src={props.data.thumb}width={800} height={600} alt={""}className=" w-full overflow-hidden rounded-md cursor-pointer mb-3"/>

NextJS中的Image,加载其他域名地址下图片会出现如下错误:

 ⨯ Error: Invalid src prop (https://images.xxx.com/photo/2023/dd2434067ce2093f77ef0a2b22725913.png) on `next/image`, hostname "images.xxx.com" is not configured under images in your `next.config.js`
See more info: https://nextjs.org/docs/messages/next-image-unconfigured-hostat Array.map (<anonymous>)

解决方法:
next.config.js文件中加入

const nextConfig = {reactStrictMode: true,images: {domains: ['images.xxx.com']}
}

如果你项目中有不确定的任意域名图片的需求,还是用img标签吧,没有找到nextConfig中通配符允许任意域名的配置方式。

使用img标签,npm run build可能会报如下警告

./src/app/(components)/article-row.tsx
18:11  Warning: Using `<img>` could result in slower LCP and higher bandwidth. Consider using `<Image />` from `next/image` to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element  @next/next/no-img-element
18:11  Warning: img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.  jsx-a11y/alt-text

改为

<picture><img src={props.data.thumb}/>
</picture>

警告不再出现

相关文章:

  • SQL 中的运算符与别名:使用示例和语法详解
  • java/Android:将字符串按数量分割
  • 「torch.cosine_smilarity() = 0」引发的关于cpu与gpu精度问题的探讨
  • 自动驾驶术语汇总
  • mac rancher desktop 修改docker镜像源
  • Vue框架学习笔记——数据代理
  • 2023年【道路运输企业安全生产管理人员】最新解析及道路运输企业安全生产管理人员复审考试
  • 微服务学习(十二):安装Minio
  • spark shuffle 剖析
  • 芯片安全和无线电安全底层渗透技术
  • 算法设计与实现--分治篇
  • 什么是软件需求?以及需求的最佳实践?
  • 语音识别入门——常用软件及python运用
  • UML建模图文详解教程01——Enterprise Architect的安装与使用
  • 【STM32】GPIO输出
  • hexo+github搭建个人博客
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 《Java编程思想》读书笔记-对象导论
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • codis proxy处理流程
  • jQuery(一)
  • k8s如何管理Pod
  • nodejs调试方法
  • OSS Web直传 (文件图片)
  • Python实现BT种子转化为磁力链接【实战】
  • Redux 中间件分析
  • 安卓应用性能调试和优化经验分享
  • 闭包--闭包之tab栏切换(四)
  • 成为一名优秀的Developer的书单
  • 大主子表关联的性能优化方法
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 什么是Javascript函数节流?
  • 想写好前端,先练好内功
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 在electron中实现跨域请求,无需更改服务器端设置
  • C# - 为值类型重定义相等性
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #宝哥教你#查看jquery绑定的事件函数
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计高校学生选课系统
  • (一)SpringBoot3---尚硅谷总结
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)负载均衡,回话保持,cookie
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ..回顾17,展望18
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET与 java通用的3DES加密解密方法
  • .Net中间语言BeforeFieldInit
  • .pyc文件是什么?