精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Web圖像組件設計的優秀實踐

開發 前端
網頁中的圖片處理一直是 Web 開發的一大挑戰,今天跟大家來一起看看 Next.js 中的 Image 組件,我覺得這個組件的設計有很多值得借鑒的地方,可以作為圖片組件設計的優秀實踐。

 

大家好,我是 ConardLi ,網頁中的圖片處理一直是 Web 開發的一大挑戰,今天跟大家來一起看看 Next.js 中的 Image 組件,我覺得這個組件的設計有很多值得借鑒的地方,可以作為圖片組件設計的優秀實踐。英文原文在這:https://web.dev/image-component/

本文中會涉及一些網頁性能指標,沒有了解過的同學可以先看一下我這篇文章:

網頁中的圖像帶來的主要問題和優化方向

網頁中的圖片不僅會影響網頁性能,還有可能會影響業務,一個網頁中加載的圖片數量是用戶訪問網站的轉化率的第二大影響因素。

作為網頁最佳實踐檢查中的的一部分, Lighthouse 列出了很多種優化圖片加載的建議,比如下面這幾點:

未指定大小的圖片會降低 CLS

未指定寬高的圖片會導致布局的不穩定并導致布局偏移指標 ( CLS ) 惡化。在 img 元素上設置 width 和 height 屬性可以優化這個問題,例如:

  1. <img src="flower.jpg" width="360" height="240"

寬度和高度應該設置的更接近圖片本身的寬高比。如果差的太多可能導致圖像看起來失真。

使用 CSS 新增的 aspect-ratio 屬性可以幫你更好的響應式的調整圖片大小。

圖片太大可能影響 LCP

圖像的文件大小越大,下載所需的時間就越長。網頁中的大圖可能是觸發最大內容繪制指標 ( LCP )的最重要元素。作為網頁關鍵內容的一部分并且需要很長時間下載的圖片肯定會降低網頁的 LCP 。

在很多情況下,開發者可以通過更好的壓縮或者使用響應式圖像來減小圖片大小。 <img> 元素的 srcset 和 sizes 屬性可以指定不同大小的圖片文件。然后瀏覽器可以根據屏幕大小和分辨率選擇性加載。

糟糕的圖像壓縮可能影響 LCP

AVIF 或 WebP 等現代圖片格式可以提供比 JPEG 和 PNG 等常用格式更好的壓縮能力。在某些情況下,對于相同質量的圖片,更好的壓縮可以將文件大小減少 25% 到 50% 。這種體積上的減少可以讓下載速度更快,數據消耗更少。

加載不必要的圖片可能影響 LCP

加載網頁時,用戶在首屏看不到的圖片可以延遲加載,這樣它們就不會對 LCP 造成影響。

圖片優化的主要挑戰

在上面我們已經把主要問題和優化方向都列出來了,事實上,由于一些問題,并不是所有的網站都能作出這些優化,比如:

  • 優先事項 :Web 開發者可能通常更傾向于關注代碼、 JavaScript 和數據優化。大部分前端可能不知道圖片的主要問題以及如何優化它們。
  • 開箱即用的解決方案 :即使我們意識到了這些問題,但是對于我們的研發框架可能缺少一些開箱即用的解決方案,這會大大提升優化成本。
  • 動態加載圖片 :除了我們開發的時候引入的一些圖片,可能還有一部分是來自于用戶上傳。在圖片來源是動態的情況下,定義此類圖片的大小可能比較困難。
  •  
    1. 瀏覽器支持 
    2. AVIF 
    3. WebP 
  • 懶加載的復雜性 :實現懶加載有很多鐘方法,那你至少哪種方法是最適合你的網頁的嗎,不同設備上不同的視口尺寸也會將問題復雜化。

Image組件的最佳實踐

在過去的一年里,我們使用 Next.js 框架設計和實現了 Image組件 。它可以替換 Next.js 中的 <img> 元素,這是一個使用示例:

  1. // Before with <img> element: 
  2. function Logo() { 
  3.   return <img src="/code秘密花園.jpg" alt="logo" height="200" width="100" /> 
  4.  
  5. // After with image component: 
  6. import Image from 'next/image' 
  7.  
  8. function Logo() { 
  9.   return <Image src="/logo.jpg" alt="logo" height="200" width="100" /> 

組件提供了一組豐富的功能和原則來解決與圖片相關的問題。它還允許開發者根據各種圖片要求對其進行自定義的選項配置。

防止布局變化

就像上面提到的,未指定寬高的圖片會導致布局的不穩定并導致布局偏移指標 ( CLS ) 惡化。使用 Next.js Image 組件時,開發者必須使用 width 和 height 屬性指定圖片大小,以防止任何布局偏移。如果大小未知,開發者必須指定 layout=fill 提供一個位于容器內的未知大小圖片。

  1. // Image component with width and height specified 
  2. <Image src="/logo.jpg" alt="logo" height="200" width="100" /> 
  3.  
  4. // Image component with layout specified 
  5. <Image src="/hero.jpg" layout="fill" objectFit="cover" alt="hero" /> 
  6.  
  7. // Image component with image import 
  8. import Image from 'next/image' 
  9. import logo from './code秘密花園.png' 
  10.  
  11. function Logo() { 
  12.   return <Image src={logo} alt="logo" /> 

響應式

要使圖像跨設備自適應,開發者必須在 <img> 元素中設置 srcset 和 sizes 屬性。如果使用 Image 組件就可以不用做這項工作。 Next.js 中的 Image 組件可以有一個全局的圖片設置,根據布局模式可以將它們應用于 Image 組件的所有實例,有下面三個屬性:

  • deviceSizes 屬性:此屬性可用于基于應用程序用戶基礎的通用設備一次性配置斷點。
  • imageSizes property :這也是一個可配置的屬性,用于獲取與設備大小斷點對應的圖像大小。
  •  
    1. layout 
    2. deviceSizes 
    3. imageSizes 
    4. fixed,fill,intrinsic 
    5. responsive 

當使用 fill 或 responsive 布局模式加載圖片時, Next.js 會根據請求頁面的設備的大小識別要提供的圖片,并適當地設置 srcset 和 sizes 。

下面的例子展示了怎么使用布局模式來控制不同屏幕上的圖像大小。

Layout = Intrinsic :縮小以適應容器在較小視口上的寬度。在較大的視口上放大時不會超過圖像的固有尺寸,容器寬度為 100%

Layout = Fixed :不管在什么設備上,寬度和高度是固定的。

Layout = Responsive :根據容器在不同視口上的寬度縮小或放大,保持寬高比。

Layout = Fill :寬高自動填充父容器

懶加載

Image 組件默認提供了一個內置的、高性能的延遲加載解決方案。 <img> 元素有一些默認的懶加載方案,但它們都有很多缺點,使用起來也比較麻煩,我們可能會采用以下懶加載方法之一:

  • 指定 loading 屬性:實現簡單,但兼容性差
  • 使用 Intersection Observer API :設計一個自定義的懶加載解決方案需要深思熟慮的設計和實現,不是所有開發都有時間和精力做這種設計。
  • 第三方懶加載庫:你需要一定的時間對這些庫進行選擇和評估。

在 Next.js 的 Image 組件中,圖片默認的設置就是 Lazy 的。懶加載是使用 Intersection Observer 實現的,它的兼容性很好。我們不需要做任何額外的事情來啟用它,但我們可以根據具體的場景去選擇禁用。

預加載

上面提到了,圖像的文件大小越大,下載所需的時間就越長。網頁中的大圖可能是觸發最大內容繪制指標 ( LCP )的最重要元素,對一些大圖進行預加載可能是個好主意。

使用 <img> 元素時, HTML 標題中可能包含預加載提示:

  1. <link rel="preload" as="image" href="important.png"

不管使用什么框架,一個設計良好的圖像組件應該提供一種方法來調整圖像的加載順序。在 Next.js 的 Image 組件中,開發人員可以使用 priority 屬性指示適合預加載的圖像。

  1. <Image src="/code秘密花園.jpg" alt="ConardLi" height="400" width="200" priority /> 

推薦CDN托管圖片

Next.js 的 Image 默認使用一種加載器架構來處理圖片,你可以自定義配置圖片的 CDN 前綴。

  1. module.exports = { 
  2.   images: { 
  3.     loader: 'imgix'
  4.     path: 'https://ImgApp/imgix.net'
  5.   }, 

通過這種配置,開發者可以在圖片加載時中使用相對路徑,框架會將相對路徑與 CDN 路徑連接起來生成絕對 URL 。目前支持一些主流的圖像 CDN ,如 Imgix、Cloudinary 和 Akamai 。這種架構通過 loader 為應用支持使用自定義 CDN 提供商。

漸進式加載

所謂漸進式加載,就是在實際圖像加載時先顯示質量較差的占位符圖,它可以與懶加載結合使用,從而提高了感知性能并增強用戶體驗。

Next.js Image 組件支持通過 placeholder 屬性對圖像進行漸進式加載,用于在加載實際圖像時顯示低質量或模糊的圖像。

效果

下面是 leboncoin 使用了 Image 組件后的優化效果:

LCP 從 2.4s 下降到 1.7s ,為頁面下載的總圖像資源大小從 663kB 增加到了 326kB (懶加載的圖片大小約為 100kB )。

 

責任編輯:張燕妮 來源: code秘密花園
相關推薦

2024-08-26 15:35:40

2022-06-30 13:56:05

Rating鴻蒙

2023-03-30 16:50:18

2024-01-11 11:25:22

2023-04-20 11:59:03

開源PatternFly

2023-07-24 16:08:17

測試開發

2012-02-07 10:44:48

Web設計

2023-03-13 16:25:28

2020-05-29 09:41:26

微服務數據工具

2019-09-17 09:44:45

DockerHTMLPython

2021-04-15 08:08:48

微前端Web開發

2019-11-27 10:55:36

云遷移云計算云平臺

2023-06-06 16:01:00

Web優化

2020-03-07 21:48:46

物聯網可視化技術設計

2020-04-22 09:00:00

REST API參數化前端

2021-07-06 14:17:16

MLOps機器學習AI

2021-08-17 15:00:10

BEC攻擊網絡攻擊郵件安全

2020-03-09 14:10:48

代碼開發工具

2022-12-21 08:20:01

2023-06-29 00:19:51

點贊
收藏

51CTO技術棧公眾號

精品国产亚洲一区二区三区| 青青青草网站免费视频在线观看| 久久久久国产精品| 91麻豆精品国产自产在线观看一区 | 婷婷视频在线播放| 精品人妻一区二区三区四区不卡| 日韩网站在线| 色婷婷综合久久久久中文字幕1| 无码人妻丰满熟妇啪啪网站| 成人啊v在线| 亚洲国产精品久久人人爱蜜臀| 欧美久久电影| 亚洲第一视频在线播放| 日韩高清中文字幕一区| 欧美黄色片视频| 色屁屁草草影院ccyy.com| 亚洲无线观看| 欧美日韩国产高清一区二区三区 | 久久这里只有精品国产| 视频一区中文| 亚洲第一页在线| 日本在线播放一区二区| 亚洲美女炮图| 亚洲国产一区二区视频| 在线免费观看成人| 国产在线一在线二| 不卡在线视频中文字幕| 91免费看蜜桃| 国产伦一区二区| 日本在线不卡视频| 51色欧美片视频在线观看| 欧美人妻精品一区二区免费看| 成人激情免费视频| 亚洲乱亚洲乱妇无码| 久久久久久久穴| 999精品视频在线观看| 91精品福利视频| a在线视频观看| 成人三级小说| 亚洲自拍偷拍图区| 热久久最新网址| 国产美女在线观看| ●精品国产综合乱码久久久久| 日本精品一区二区| 日本一二三区在线视频| 99视频在线精品| 精品国产一区二区三区麻豆免费观看完整版 | 国产精品1区2区| 91亚洲精华国产精华| 亚洲特级黄色片| 男女性色大片免费观看一区二区 | 久久久精品电影| 午夜激情视频在线播放| 99精品国产一区二区三区| 在线看欧美日韩| 阿v天堂2014| 日韩国产欧美一区二区| 色爱精品视频一区| 亚洲欧美精品aaaaaa片| 亚洲精品国产偷自在线观看| 久久久精品网站| av激情在线观看| 国语对白精品一区二区| 国语自产精品视频在线看抢先版图片| 久久久精品人妻一区二区三区四| 国产精品sm| 91国内揄拍国内精品对白| 日本熟伦人妇xxxx| 另类av一区二区| 国产精品久久久久av| 中文字幕一区二区三区波野结 | 欧美一级二级三级蜜桃| 岛国精品一区二区三区| 天天久久夜夜| 在线午夜精品自拍| 欧美特级一级片| 亚洲毛片av| 日本精品va在线观看| 欧美成人一区二区视频| 国内精品久久久久影院色| 97久久精品午夜一区二区| 后入内射欧美99二区视频| 99国产精品国产精品毛片| 涩涩涩999| 在线三级电影| 欧美日韩精品国产| 天堂网在线免费观看| 97精品久久| 亚洲天堂开心观看| 国产av 一区二区三区| 亚洲毛片播放| 91久久国产综合久久91精品网站 | 一区二区欧美日韩视频| 国产天堂av在线| 亚洲欧美大片| 亚洲最大成人网色| 三级在线观看| 亚洲女人****多毛耸耸8| 草草久久久无码国产专区| 国产亚洲精彩久久| 欧美精品一区二区在线观看| 少妇无套高潮一二三区| 欧美激情视频一区二区三区免费| 欧洲成人性视频| 国产成人精品a视频| 久久蜜桃一区二区| 91亚洲精品国产| 久久精品97| 日韩经典中文字幕| 农村妇女精品一区二区| 天堂av在线一区| 国产精品一区在线观看| 无遮挡动作视频在线观看免费入口| 同产精品九九九| 日本高清免费在线视频| av永久不卡| 4438全国亚洲精品在线观看视频| av在线亚洲天堂| 中文字幕av一区二区三区高 | 国产成人福利夜色影视| 日韩av一区在线观看| 我家有个日本女人| 精品一区二区三区久久| 日韩精品成人一区二区在线观看| 黄页在线观看免费| 91精品国产一区二区人妖| 欧美黄色一级生活片| 99精品久久| 999热视频| 美女国产在线| 欧美日韩国产综合视频在线观看| 亚洲自拍偷拍一区二区| 日韩一级在线| 国产伦精品一区二区三区在线 | 成人免费观看网站| 成人av黄色| 欧美精品18+| 亚洲天堂av中文字幕| 日韩av一级片| 亚洲国产成人不卡| 成人黄色视屏网站| 在线观看久久av| 中文字幕精品在线观看| 国产精品午夜电影| 国产一二三四在线视频| 视频一区欧美| 国产精品久久久久久亚洲调教| 男操女在线观看| 色拍拍在线精品视频8848| 一区二区三区四区免费| 日本一区中文字幕 | 欧美99久久| 亚洲最大av在线| 污影院在线观看| 日韩欧美不卡一区| 国产一级在线播放| av亚洲产国偷v产偷v自拍| 少妇无码av无码专区在线观看| 日本亚洲不卡| 国产成人av在线| 2017亚洲天堂1024| 欧美精品视频www在线观看| 亚洲激情图片网| 久久香蕉精品| 影音先锋成人在线电影| 人人狠狠综合久久亚洲婷| 国产乱码精品1区2区3区| 亚洲自拍欧美色图| 免费看电影在线| 日韩视频免费观看高清在线视频| 欧洲久久久久久| 三上悠亚一区二区| 一本大道亚洲视频| 一级片视频网站| 亚洲激情中文1区| 先锋资源av在线| 视频一区视频二区在线观看| 一区二区视频在线播放| 日韩精品一区二区三区中文在线| 97**国产露脸精品国产| 国产鲁鲁视频在线观看免费| 9191国产精品| 中日韩黄色大片| 中文字幕av资源一区| 中文字幕在线观看视频www| 亚洲人成毛片在线播放女女| 午夜精品美女久久久久av福利| 国产成人久久精品一区二区三区| 午夜精品在线视频| av在线播放网站| 日韩美一区二区三区| 青青青国产在线| 亚洲男人天堂av网| 少妇大叫太粗太大爽一区二区| 蜜臀va亚洲va欧美va天堂 | 日批视频免费看| 久久一本综合频道| 亚洲一区 在线播放| 视频一区中文| 国产麻豆乱码精品一区二区三区 | 日韩免费视频线观看| 久久久久久久亚洲| 亚洲精品乱码久久久久久黑人| 自拍偷拍中文字幕| 国产99精品国产| 亚洲欧美日韩综合网| 午夜亚洲影视| 天堂8在线天堂资源bt| 奇米影视亚洲| 鲁片一区二区三区| 午夜电影一区| 国产中文字幕亚洲| 久久精品女人天堂av免费观看| 欧美激情网友自拍| 青青影院在线观看| 亚洲全黄一级网站| 色窝窝无码一区二区三区成人网站 | 欧美裸身视频免费观看| 国内av一区二区三区| 亚洲级视频在线观看免费1级| 97久久人国产精品婷婷| 在线一区二区观看| 黄色在线免费观看| 亚洲成人免费视| 欧产日产国产v| 亚洲人精品一区| 日本猛少妇色xxxxx免费网站| 91麻豆国产自产在线观看| 91精品人妻一区二区三区四区| 免费在线观看一区二区三区| 99热成人精品热久久66| 国产精品免费看| 国产精品无码av在线播放| 欧美日韩亚洲国产精品| 国产香蕉一区二区三区| 国产精品精品| 成人性做爰片免费视频| 天天av综合| 伊人婷婷久久| 欧美韩日高清| 一本色道婷婷久久欧美| 日韩免费看片| 日韩视频在线免费播放| 我不卡手机影院| 99热都是精品| 午夜久久黄色| 久艹在线免费观看| 一区二区亚洲精品| 丁香花在线影院观看在线播放 | 最近中文字幕一区二区| 免费高清视频精品| 日本高清久久久| 韩日欧美一区二区三区| 欧美一级日韩一级| www.日本xxxx| 免费高清成人在线| 女同激情久久av久久| 国产一区二区91| 久久久久亚洲av无码专区首jn| 国产69精品久久久久777| 久久久久亚洲AV成人网人人小说| 成人自拍视频在线观看| 亚洲av无码成人精品国产 | 国产精品suv一区二区88| 国产精品电影一区二区| 国产在线播放观看| 中文字幕在线观看免费高清| 老司机在线看片网av| 九色porny丨国产精品| 免费黄色一级网站| 蜜臀va亚洲va欧美va天堂 | 欧美精品一区二区蜜桃| 亚洲一区二区精品3399| 亚洲成a人无码| 亚洲av无码乱码国产精品久久| 国产91欧美| 国产午夜久久久久| 成人激情视频小说免费下载| 丰满的亚洲女人毛茸茸| 国产精品一区二区男女羞羞无遮挡| 女同性αv亚洲女同志| 99久久综合国产精品| 欧美福利第一页| 亚洲欧美偷拍另类a∨色屁股| 国产亚洲精品久久久久久无几年桃 | 少妇一级淫免费播放| 黄色a一级视频| 成人在线视频一区| 国产精品成人一区二区三区电影毛片 | 国产精品综合久久久久久| 亚洲综合小说图片| 亚洲免费av网| 国产亚洲精品v| 激情文学亚洲色图| av午夜精品一区二区三区| 免费看裸体网站| 亚洲成av人**亚洲成av**| 中文字幕免费播放| 亚洲精品在线一区二区| 幼a在线观看| 91精品国产高清久久久久久| 亚洲老司机网| 欧美日韩电影一区二区| 欧美日韩国产在线一区| 日本老熟妇毛茸茸| 成人网页在线观看| 久久成人小视频| 色狠狠桃花综合| 欧美一级性视频| 精品国产欧美一区二区三区成人 | 欧美久久成人| 成年网站免费在线观看| 久久久国产精品午夜一区ai换脸 | 欧美自拍偷拍午夜视频| 污污视频在线观看网站| 欧美成人精品xxx| 成人在线免费电影网站| 牛人盗摄一区二区三区视频| 亚洲视频中文| 国产chinesehd精品露脸| 国产精品久久久久一区二区三区共| 韩国av中文字幕| 欧美精品一区二区三区四区| 中文字幕中文字幕在线中高清免费版| 国产精品福利网站| 亚瑟一区二区三区四区| 日本福利视频一区| 国产精品一区在线观看你懂的| www久久久久久久| 色美美综合视频| 蜜桃视频在线免费| 91av在线视频观看| 风间由美性色一区二区三区四区| 久久免费一级片| 国产在线精品视频| 午夜精品久久久久99蜜桃最新版| 欧美亚洲动漫另类| 黄网在线观看| 国产成人综合久久| 国产一区二区三区网| 日韩视频第二页| 久久久五月婷婷| 日本中文字幕在线| 亚洲欧美制服综合另类| 超碰超碰人人人人精品| 欧美系列一区| 爽爽淫人综合网网站| 国产一二三四区在线| 91高清视频免费看| av大片在线播放| 成人a免费视频| 一区二区电影| a级片在线观看视频| 午夜精品久久久久影视| 亚洲av成人精品一区二区三区在线播放 | 色噜噜色狠狠狠狠狠综合色一| 日韩国产欧美三级| 亚洲欧洲综合网| 678五月天丁香亚洲综合网| 菠萝菠萝蜜在线视频免费观看| 2022国产精品| 99亚洲视频| 一区二区黄色片| 欧美日韩国产高清一区二区三区| 国产精品实拍| 成人综合色站| 久久成人亚洲| 麻豆网址在线观看| 精品少妇一区二区三区视频免付费| 91九色在线播放| 视频三区二区一区| 国产精品一卡二| 久久久久久久久影院| 一道本无吗dⅴd在线播放一区| 国产一区二区三区国产精品| 超级碰在线观看| 久久久久久久久久久久久久久99| 亚洲中文字幕一区二区| 欧美高清视频在线观看| 牲欧美videos精品| 五月激情婷婷在线| 亚洲成a人片综合在线| 免费在线黄色影片| 91精品久久久久久久久中文字幕 | 国产精品久久久久婷婷| 黑人精品一区二区| 国产精品国内视频| 欧美激情麻豆| www.99热| 亚洲韩国欧洲国产日产av | 欧美剧在线免费观看网站 | 欧美日韩中文字幕| 蜜桃视频网站在线| 另类欧美小说| 国产激情视频一区二区在线观看 | 日韩欧美国产成人精品免费| 精品一区二区三区四区在线| 日本99精品| 伊人国产在线视频| 精品女厕一区二区三区|