圖片是許多應用程式的重要組成部分,也可能是應用程式效能問題的一大來源,包括 Core Web Vitals 分數偏低。
圖片最佳化可能是個複雜的主題,但 Angular 透過 NgOptimizedImage 指令為你處理了大部分工作。
NOTE: 在深入指南中進一步了解使用 NgOptimizedImage 的圖片最佳化。
在這個練習中,你將學習如何使用 NgOptimizedImage,確保你的圖片有效率地載入。
-
匯入 NgOptimizedImage 指令
要運用
NgOptimizedImage指令,先從@angular/common函式庫匯入它,並把它加到元件的imports陣列中。import { NgOptimizedImage } from '@angular/common'; @Component({ imports: [NgOptimizedImage], ... }) -
把 src 特性更新為 ngSrc
要啟用
NgOptimizedImage指令,請把src特性換成ngSrc。無論是靜態圖片來源(即src)還是動態圖片來源(即[src]),都適用這個做法。import { NgOptimizedImage } from '@angular/common'; @Component({ template: ` ... <li> Static Image: <img ngSrc="/logo.svg" alt="Angular logo" width="32" height="32" /> </li> <li> Dynamic Image: <img [ngSrc]="logoUrl" [alt]="logoAlt" width="32" height="32" /> </li> ... `, imports: [NgOptimizedImage], }) -
加上 width 和 height 特性
請注意,在上面的程式碼範例中,每張圖片都有
width和height特性。為了避免版面配置位移,NgOptimizedImage指令要求每張圖片都具備這兩個尺寸特性。在你無法或不想為圖片指定靜態
height和width的情況下,你可以使用fill特性,讓圖片表現得像「背景圖片」,填滿它的容器元素:// Container div has 'position: "relative"' <div class="image-container"> <img ngSrc="www.example.com/image.png" fill /> </div>NOTE: 要讓
fill圖片正確渲染,它的父元素必須設定position: "relative"、position: "fixed"或position: "absolute"樣式。 -
優先載入重要的圖片
載入效能最重要的最佳化之一,是優先載入可能是 「LCP 元素」 的圖片,也就是頁面載入時畫面上最大的圖形元素。為了最佳化載入時間,請務必把
priority特性加到你的「主視覺圖片」上,或任何你認為可能是 LCP 元素的其他圖片。<img ngSrc="www.example.com/image.png" height="600" width="800" priority /> -
選擇性:使用圖片載入器
NgOptimizedImage讓你可以指定一個圖片載入器,告訴指令如何為你的圖片格式化 URL。使用載入器讓你可以用簡短的相對 URL 來定義圖片:providers: [provideImgixLoader('https://my.base.url/')],最終的 URL 會是 'https://my.base.url/image.png'
<img ngSrc="image.png" height="600" width="800" />圖片載入器不只是為了方便——它們讓你能運用
NgOptimizedImage的完整能力。在這裡進一步了解這些最佳化,以及熱門 CDN 的內建載入器。
把這個指令加入你的工作流程後,你的圖片現在會在 Angular 的協助下,以最佳實務的方式載入 🎉
如果你想了解更多,請查看 NgOptimizedImage 的文件。繼續保持好表現,接著來學習路由。