精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久这里只有精品9| 超薄肉色丝袜一二三| 黄页在线观看免费| 91在线porny国产在线看| 国产成人亚洲精品| 亚洲少妇xxx| 理论片一区二区在线| 在线观看免费亚洲| 久久久久久久9| 国产小视频在线播放| 国产真实乱偷精品视频免| 97福利一区二区| 日本二区三区视频| 欧亚精品一区| 欧美一区二区视频网站| 国产日产欧美视频| 怡红院在线播放| 国产区在线观看成人精品| 俄罗斯精品一区二区| 国产三级理论片| 亚洲日本视频| 久久成年人视频| 欧美老女人性生活视频| 久久黄色影视| 日韩一级完整毛片| 中文字幕第88页| 中文日产幕无线码一区二区| 亚洲欧美日韩国产成人精品影院| 蜜桃传媒视频麻豆第一区免费观看| 国产农村妇女毛片精品| 免费在线观看一区二区三区| 国产91精品久久久| 亚洲国产综合久久| 国内精品久久久久久久影视麻豆 | 中文视频在线观看| **精品中文字幕一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 免费看欧美黑人毛片| 日本中文字幕电影在线免费观看| 久久影院电视剧免费观看| 国产精品18毛片一区二区| 国产乱叫456在线| 美女在线一区二区| 国产精品久久久久久久久借妻| av大片在线免费观看| 亚洲经典视频在线观看| 欧美黄色片视频| 91日韩中文字幕| 午夜精品毛片| 毛片精品免费在线观看| 国产免费美女视频| 天天综合亚洲| 欧美成人在线免费| 免费一级肉体全黄毛片| 欧美破处大片在线视频| 久久91亚洲精品中文字幕| 日韩一级片av| 国产综合欧美| 5566日本婷婷色中文字幕97| 一级成人黄色片| 日韩国产欧美在线播放| 国产精品福利在线观看| 在线观看国产黄| 精品午夜久久福利影院| 96pao国产成视频永久免费| 国产情侣激情自拍| 丁香亚洲综合激情啪啪综合| 国产精品免费一区二区| 熟妇人妻系列aⅴ无码专区友真希 熟妇人妻av无码一区二区三区 | 欧美成人在线网站| 最新一区二区三区| 激情综合激情| 欧美一区二区三区免费观看| 色一情一乱一伦| 美女性感视频久久| 亚洲最大福利网| 少妇高潮一区二区三区99小说| 337p粉嫩大胆噜噜噜噜噜91av| 欧美日韩高清免费| √天堂资源地址在线官网| 亚洲黄色小视频| 国产中文字幕视频在线观看| а√天堂资源国产精品| 欧美一区二区三区小说| asian性开放少妇pics| 欧美一区二区麻豆红桃视频| 美女福利精品视频| 国产手机在线视频| 男女性色大片免费观看一区二区| 91亚洲精品视频| 偷拍精品一区二区三区| 国产精品三级av| 国产一线二线三线女| 欧美理论影院| 日韩欧美一二三四区| 我和岳m愉情xxxⅹ视频| 重囗味另类老妇506070| 欧美中在线观看| 国产伦精品一区二区三区四区| 高清shemale亚洲人妖| 日韩欧美视频一区二区三区四区 | 91精品国产亚洲| 国产又黄又爽视频| 久久一区二区三区国产精品| 一区二区三区四区久久| 成人影院入口| 精品成人免费观看| 国产男女猛烈无遮挡在线喷水| 国产欧美高清| 粉嫩高清一区二区三区精品视频| 成年人在线视频| 婷婷开心激情综合| 中文字幕在线视频一区二区| 国产免费av一区二区三区| 欧美激情欧美激情| 国产又粗又猛又爽又黄91| 91丨porny丨户外露出| 黄黄视频在线观看| 九七电影院97理论片久久tvb| 亚洲国产婷婷香蕉久久久久久| 三级黄色录像视频| 丝袜美腿亚洲色图| 精品国产一区二区三区四区vr| 中文av资源在线| 欧美另类videos死尸| xxx在线播放| 国产精品社区| 激情五月综合色婷婷一区二区| 国产网友自拍视频导航网站在线观看| 一本久久精品一区二区| 国模私拍在线观看| 欧美二区不卡| 96国产粉嫩美女| 久cao在线| 欧美精品欧美精品系列| 美国黑人一级大黄| 日韩av午夜在线观看| 久久久com| 色老头在线一区二区三区| 欧美xxxx老人做受| 免费麻豆国产一区二区三区四区| 精品在线观看视频| 永久免费精品视频网站| 激情久久一区二区| 在线免费观看羞羞视频一区二区| 在线观看日本视频| 久久久亚洲综合| 四虎永久在线精品无码视频| 日韩福利视频一区| 69**夜色精品国产69乱| 五月激情六月婷婷| 欧美视频中文在线看| 亚洲av无码一区二区三区观看| 亚洲久久视频| 蜜桃av噜噜一区二区三区| 欧美一级大黄| 一区二区三区精品99久久 | 九色porny自拍视频在线播放| 欧美不卡一区二区三区| 日本少妇全体裸体洗澡| av在线播放成人| 国产精品-区区久久久狼| 视频国产一区| 国产色视频一区| 怡红院在线播放| 亚洲国产欧美一区二区三区同亚洲 | 激情成人在线观看| 欧美色一级片| 精品久久久久久一区| videos性欧美另类高清| 中文字幕免费精品一区高清| 国产免费久久久| 亚洲成人激情自拍| 人人爽人人爽人人片| 精品无人区卡一卡二卡三乱码免费卡| 在线观看污视频| 女仆av观看一区| 国产精品美女久久| 天堂8中文在线| 精品亚洲国产视频| 亚洲综合免费视频| 亚洲国产成人高清精品| 亚洲自拍偷拍图| 国产精品自拍一区| 噜噜噜久久亚洲精品国产品麻豆| 欧美色蜜桃97| 国产高清在线一区二区| 丝袜美腿一区| 欧美日本中文字幕| 国产日韩精品在线看| 日韩三级免费观看| 天天干,天天干| 亚洲综合色噜噜狠狠| 久久久久久久毛片| 国产麻豆成人传媒免费观看| 欧美性大战久久久久xxx| 欧美成人直播| 欧美二区三区在线| 视频免费一区二区| 国产精品欧美一区二区三区奶水| 亚洲色图美国十次| 中文字幕精品av| 人妻视频一区二区三区| 欧美日韩黄视频| 国产成人亚洲精品自产在线| 中文字幕一区二区不卡| 亚洲狠狠婷婷综合久久久久图片| 久久国产福利国产秒拍| 黄色片久久久久| 亚洲一级高清| 综合久久国产| 欧美精品久久久久久| 国产欧美综合精品一区二区| 精品久久毛片| 日本精品免费一区二区三区| 福利写真视频网站在线| 久久韩国免费视频| 岛国视频免费在线观看| 亚洲激情中文字幕| 亚洲免费成人在线| 91精品国产一区二区三区蜜臀| 国产免费一区二区三区四区五区| 亚洲一区二区三区四区在线观看| 永久免费看mv网站入口| 亚洲国产高清aⅴ视频| 精品人妻一区二区三区视频| 成人自拍视频在线| 91人妻一区二区| 国产精品主播直播| 国产高清av片| 久久99精品久久久久久久久久久久| 日韩免费高清在线| 另类天堂av| 18禁免费无码无遮挡不卡网站 | 黄色片久久久久| 亚洲综合二区| 免费在线a视频| av成人国产| 日本午夜激情视频| 精品动漫3d一区二区三区免费版| 久久久久久av无码免费网站下载| 国产精品久久久久蜜臀| 亚洲永久激情精品| 欧美激情黄色片| 自拍另类欧美| 午夜精品999| 欧美亚洲色图视频| 亚洲一级高清| 大肉大捧一进一出好爽视频| 国产色综合网| 成年人观看网站| 日本欧美韩国一区三区| 9久久婷婷国产综合精品性色 | 欧美在线短视频| 中文字幕人妻精品一区| 欧美日韩国产系列| 国产精品久久久国产盗摄| 91精品国产91久久综合桃花 | 亚洲欧美一区二区三区久久| 免费动漫网站在线观看| 国产午夜精品免费一区二区三区| 成人性爱视频在线观看| 日韩在线观看高清| 亚洲h片在线看| 97久久国产精品| 欧美黄色三级| 成人精品久久久| 亚洲一区 二区| 久久精品人成| 99欧美视频| 日韩国产小视频| 国产欧美日韩综合一区在线播放| 粗暴91大变态调教| 精久久久久久久久久久| 制服.丝袜.亚洲.中文.综合懂| 成人国产精品免费观看视频| 精品人妻一区二区三区日产乱码卜| 久久精品一区二区三区不卡| 熟女少妇a性色生活片毛片| 亚洲一区二区三区中文字幕| 六月丁香激情综合| 欧美日韩亚洲综合一区| 性网爆门事件集合av| 亚洲精品在线视频| 蜜桃视频在线观看www社区| 久久久久女教师免费一区| 亚洲高清黄色| 99久久99久久| 国产毛片一区二区三区| 日产精品久久久久久久蜜臀| 久久国产福利| 无码人妻久久一区二区三区蜜桃| 91蜜桃免费观看视频| 人人澡人人澡人人看| 狠狠干狠狠久久| 国产又粗又长又黄| 亚洲免费精彩视频| 日本在线观看高清完整版| 国产成人精品视| 国产精品毛片久久久| 亚洲一区二区三区免费观看| 亚洲第一在线| 天天av天天操| 国产视频视频一区| 国产无遮无挡120秒| 欧美日韩精品欧美日韩精品一综合| 日本成人动漫在线观看| 久久精品视频播放| 日本综合视频| 精品国产乱码一区二区三区四区 | wwwxxxx国产| 日韩在线免费视频| 免费日韩电影| 国产女人水真多18毛片18精品 | 欧美性大战久久久久xxx | 91久久精品一区二区别| 国产一区二区三区网| 国产精品无码人妻一区二区在线 | 中文精品在线观看| 亚洲高清视频的网址| 国产精品无码在线播放| 一区二区三区天堂av| 日韩精品美女| 国产一区二区三区高清| 欧美一区影院| 色婷婷激情视频| 国产精品久久久久影院| 欧美一区免费看| 日韩国产在线看| 国产自产自拍视频在线观看| 波多野结衣一区二区三区在线观看 | 亚洲精品永久免费| 美女高潮在线观看| 国产精品入口免费| 狠狠综合久久av一区二区老牛| 黄色一级片免费播放| 亚洲欧洲av另类| 91精东传媒理伦片在线观看| 这里精品视频免费| 日韩欧美一区二区三区在线观看| 久久青青草原| 久久精品天堂| 男生草女生视频| 91精品办公室少妇高潮对白| 青梅竹马是消防员在线| 日韩av不卡在线| 国产精品亚洲片在线播放| 超碰影院在线观看| 国产午夜亚洲精品理论片色戒| 伊人中文字幕在线观看| 亚洲欧美激情四射在线日| 欧美理论影院| 亚洲日本精品国产第一区| 奇米影视在线99精品| 青青操在线播放| 5月丁香婷婷综合| 日韩专区av| 精品在线视频一区二区三区| 免费视频一区| 欧美巨胸大乳hitomi| 7777精品伊人久久久大香线蕉的| 成人黄视频在线观看| 国产免费一区| 日韩电影在线观看一区| 少妇视频一区二区| 日韩欧美亚洲一区二区| 成人影院在线视频| 欧洲一区二区在线| 久久av资源网| 国产精品第56页| 亚洲视频777| 国产一区二区| 国产视频九色蝌蚪| 中文一区在线播放| www.桃色av嫩草.com| 97av在线视频| 日本不卡二三区| 少妇献身老头系列| 日韩欧美中文字幕在线播放| 素人av在线| 国产一区二区三区黄| 蜜乳av一区二区| 精品少妇一二三区| 亚洲图片欧美午夜| 亚洲视频三区| 91最新在线观看| 亚洲自拍偷拍综合| av免费在线一区二区三区| 成人av男人的天堂| 日韩成人午夜电影| 精品一区二区三区人妻| 一区二区欧美日韩视频| 国产成人夜色高潮福利影视| 精品999在线| 黑人巨大精品欧美一区免费视频| 18视频免费网址在线观看| 精品免费一区二区三区蜜桃| 精品一区二区国语对白| 91玉足脚交嫩脚丫在线播放| 美女扒开尿口让男人操亚洲视频网站|