Uygulama performansını, kullanıcı deneyimini ve ilk yükleme sürelerini önemli ölçüde iyileştirmek için bileşen kod bölümleme ile React lazy loading'i nasıl uygulayacağınızı öğrenin.
React Lazy Loading: Bileşen Kod Bölümleme ile Performansı Artırma
Günümüz web geliştirme dünyasında performans her şeyden önemlidir. Kullanıcılar hızlı yükleme süreleri ve akıcı etkileşimler bekler. Özellikle karmaşık React uygulamalarındaki büyük JavaScript paketleri, ilk yükleme sürelerini ve genel kullanıcı deneyimini önemli ölçüde etkileyebilir. Bu sorunu çözmek için kullanılan güçlü bir teknik lazy loading, yani bileşen kod bölümlemedir. Bu makale, React.lazy
ve Suspense
kullanarak React lazy loading'i anlamak ve uygulamak için kapsamlı bir rehber sunmaktadır.
Lazy Loading ve Kod Bölümleme Nedir?
Lazy loading, aynı zamanda isteğe bağlı yükleme olarak da bilinir, kaynakların (bizim durumumuzda React bileşenlerinin) yalnızca gerçekten ihtiyaç duyulduğunda yüklenmesini erteleyen bir tekniktir. Uygulamanın tüm kodunu başlangıçta yüklemek yerine, yalnızca temel kısımlar yüklenir ve geri kalan kod, kullanıcı belirli bir rotaya gittiğinde veya belirli bir bileşenle etkileşime girdiğinde eşzamansız olarak yüklenir. Bu, ilk paket boyutunu önemli ölçüde azaltır ve etkileşime geçme süresini (TTI) iyileştirir.
Kod bölümleme, uygulamanızın kodunu daha küçük, yönetilebilir parçalara (paketlere) ayırma işlemidir. Bu paketler daha sonra bağımsız olarak ve isteğe bağlı olarak yüklenebilir. React lazy loading, bileşenleri yalnızca gerektiğinde yüklemek için kod bölümlemeden yararlanır.
Lazy Loading ve Kod Bölümlemenin Faydaları
- İyileştirilmiş İlk Yükleme Süresi: İlk paket boyutunu küçülterek, tarayıcının başlangıçta daha az JavaScript indirmesini ve ayrıştırmasını sağlar, bu da daha hızlı sayfa yükleme süreleri ile sonuçlanır. Bu, özellikle yavaş ağ bağlantılarına veya cihazlara sahip kullanıcılar için çok önemlidir.
- Geliştirilmiş Kullanıcı Deneyimi: Daha hızlı yükleme süreleri, daha duyarlı ve keyifli bir kullanıcı deneyimi sağlar, hemen çıkma oranlarını düşürür ve kullanıcı etkileşimini artırır.
- Azaltılmış Kaynak Tüketimi: Yalnızca gerekli kodu yüklemek, uygulamanın bellek ayak izini azaltır, bu da özellikle mobil cihazlar için faydalıdır.
- Daha İyi SEO: Arama motorları hızlı yükleme sürelerine sahip web sitelerini tercih eder, bu da web sitenizin arama motoru sıralamasını potansiyel olarak iyileştirir.
React.lazy
ve Suspense
ile React Lazy Loading Uygulaması
React, React.lazy
ve Suspense
kullanarak bileşenleri tembel yüklemek için yerleşik bir mekanizma sunar. React.lazy
bir bileşeni dinamik olarak içe aktarmanıza olanak tanırken, Suspense
bileşen yüklenirken bir yedek kullanıcı arayüzü (fallback UI) göstermenin bir yolunu sunar.
Adım 1: React.lazy
ile Dinamik Import'lar
React.lazy
, import()
'u çağıran bir fonksiyon alır. import()
fonksiyonu, tembel yüklemek istediğiniz bileşeni içeren bir modüle çözümlenen bir Promise döndüren dinamik bir içe aktarmadır.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
Bu örnekte, MyComponent
render edilene kadar yüklenmez. import('./MyComponent')
ifadesi, bileşeni ./MyComponent
dosyasından dinamik olarak içe aktarır. Yolun geçerli dosyaya göre göreceli olduğunu unutmayın.
Adım 2: Yükleme Durumlarını Yönetmek için Suspense
Kullanımı
Lazy loading, bileşenlerin eşzamansız olarak yüklenmesini içerdiğinden, yükleme durumunu yönetmek ve bileşen getirilirken bir yedek kullanıcı arayüzü göstermek için bir yola ihtiyacınız vardır. İşte bu noktada Suspense
devreye girer. Suspense
, alt öğelerinin hazır olana kadar render edilmesini "askıya almanızı" sağlayan bir React bileşenidir. Alt öğeler yüklenirken render edilecek kullanıcı arayüzünü belirten bir fallback
prop'u alır.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Yükleniyor...
Bu örnekte, Suspense
bileşeni MyComponent
'i sarmalar. MyComponent
yüklenirken, fallback
prop'u (
) render edilecektir. MyComponent
yüklendiğinde, yedek kullanıcı arayüzünün yerini alacaktır.
Örnek: Bir React Router Uygulamasında Rota (Route) Lazy Loading
Lazy loading, bir React Router uygulamasındaki rotalar için özellikle kullanışlıdır. Uygulamanızın tüm sayfalarını veya bölümlerini tembel yükleyebilir, böylece web sitenizin ilk yükleme süresini iyileştirebilirsiniz.
import React, { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = lazy(() => import('./pages/Home'));
const About = lazy(() => import('./pages/About'));
const Contact = lazy(() => import('./pages/Contact'));
function App() {
return (
Yükleniyor...