0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Tối ưu hóa trải nghiệm người dùng với thành phần Image trong Next.js: Giải pháp hiệu quả cho hiện tượng Cumulative Layout Shift (CLS)

Đăng vào 3 tuần trước

• 4 phút đọc

Chủ đề:

Nextjs

Tối ưu hóa trải nghiệm người dùng với thành phần Image trong Next.js: Giải pháp hiệu quả cho hiện tượng Cumulative Layout Shift (CLS)

Bạn có bao giờ cảm thấy khó chịu khi đang đọc một trang web thì mọi thứ bỗng nhiên nhảy loạn xạ khi bức ảnh tải xong? Hiện tượng này được gọi là Cumulative Layout Shift (CLS) và nó có thể ảnh hưởng nghiêm trọng đến trải nghiệm người dùng cũng như thứ hạng SEO của trang web.

Cumulative Layout Shift (CLS) là gì?

CLS là một chỉ số quan trọng trong Core Web Vitals, được dùng để đo lường sự thay đổi bố cục không mong muốn xảy ra khi trang web được tải. Một chỉ số CLS tốt không chỉ đảm bảo trải nghiệm người dùng tốt hơn mà còn góp phần cải thiện thứ hạng SEO và tạo ra hình ảnh chuyên nghiệp cho trang web.

Vấn đề với thẻ <img> truyền thống

Khi sử dụng thẻ <img> chuẩn trong HTML, thường xảy ra trường hợp làm giảm chất lượng trải nghiệm người dùng. Nguyên nhân là do trình duyệt không thể xác định kích thước ảnh cho đến khi nó tải xong. Hậu quả là văn bản tải trước nhưng hình ảnh thì lại mất thêm thời gian để tải, dẫn đến hiện tượng “nhảy” nội dung khó chịu khi ảnh xuất hiện.

Giải pháp từ Next.js: Thành phần Image

Để khắc phục vấn đề này, Next.js cung cấp thành phần Image, cho phép lập trình viên chỉ định kích thước của ảnh ngay từ đầu. Điều này giúp trình duyệt giữ khoảng trống cho ảnh và ngăn chặn việc thay đổi bố cục trong khi ảnh đang tải.

javascript Copy
import Image from 'next/image';

function ProductCard() {
  return (
    <Image
      src="/product.jpg"
      alt="Mô tả sản phẩm"
      width={640}
      height={480}
      priority={false}
      loading="lazy"
    />
  );
}

Tính năng nổi bật của thành phần Image giúp ngăn chặn layout shift

1. Kích thước bắt buộc

Cung cấp kích thước width và height là bắt buộc, giúp trình duyệt chuẩn bị không gian cho ảnh ngay cả trước khi nó tải, từ đó ngăn cản hiện tượng layout shift.

2. Kích thước linh hoạt

Thành phần Image trong Next.js cũng tự động điều chỉnh theo kích thước màn hình, giúp duy trì tỷ lệ khung hình gốc của ảnh, đồng thời ngăn ngừa layout shift trên các thiết bị khác nhau.

3. Placeholder tự động

Một tính năng đặc biệt của thành phần Image là khả năng sử dụng placeholder mờ, điều này giữ cho bố cục ổn định trong lúc ảnh tải và mang lại trải nghiệm mượt mà hơn cho người dùng.

Thực hành tốt nhất khi sử dụng thành phần Image trong Next.js

Để tận dụng tối đa thành phần Image, bạn nên làm theo những nguyên tắc sau:

1. Luôn chỉ định kích thước

Việc chỉ định kích thước cho ảnh giúp trình duyệt xác định chính xác không gian cần thiết, tránh việc thay đổi bố cục không mong muốn.

javascript Copy
// Tốt
<Image src="/hero.jpg" width={1200} height={600} alt="Hình ảnh nổi bật" />

// Xấu (thiếu kích thước)
<Image src="/hero.jpg" alt="Hình ảnh nổi bật" />

2. Sử dụng placeholder mờ cho ảnh quan trọng

Áp dụng placeholder mờ cho những hình ảnh quan trọng để tạo cảm giác tải mượt mà.

javascript Copy
<Image src="/hero.jpg" width={1200} height={600} alt="Hình ảnh nổi bật" placeholder="blur" />

3. Đặt mức độ ưu tiên cho hình ảnh quan trọng

Đối với những hình ảnh nổi bật, hãy đặt thuộc tính priority thành true để tăng tốc độ tải.

javascript Copy
<Image src="/hero.jpg" width={1200} height={600} alt="Hình ảnh nổi bật" priority />

Những lỗi thường gặp cần tránh

1. Đừng quên văn bản thay thế

Văn bản thay thế rất quan trọng cho khả năng truy cập, giúp các người dùng sử dụng màn hình có thể hiểu được nội dung hình ảnh.

javascript Copy
// Xấu
<Image src="/product.jpg" width={400} height={300} />

// Tốt
<Image src="/product.jpg" width={400} height={300} alt="Cốc gốm đỏ với hoa văn" />

2. Cẩn thận với URL hình ảnh bên ngoài

Nếu sử dụng hình ảnh từ nguồn bên ngoài, hãy chắc chắn rằng bạn đã cấu hình tên miền trong file next.config.js:

javascript Copy
module.exports = {
  images: {
    domains: ['example.com'],
  },
};

Để kiểm tra sự cải thiện chỉ số CLS, bạn có thể sử dụng các công cụ như Chrome DevTools (tab Performance), Lighthouse Audits và Core Web Vitals trong Google Search Console.

Việc áp dụng thành phần Image trong Next.js cùng với các thực hành tốt nhất này sẽ giúp bạn có được một trang web ổn định hơn về bố cục và trải nghiệm người dùng tốt hơn. Cảm ơn bạn đã theo dõi bài viết này!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào