Açısal Olarak Tembel Yükleme (Web Sitenizde Çalışmasını Sağlayın)

Yayınlanan: 2023-01-17

Angular, ölçeklenebilir kurumsal düzeyde web uygulamaları oluşturmak için Google tarafından geliştirilmiş bir ön uç JavaScript çerçevesidir. Bu uygulamalardan bazıları, uygulamanızın yükleme süresini etkileyerek oldukça büyüyebilir.

Yükleme süresini azaltmak ve kullanıcılarınızın genel deneyimini iyileştirmek için yavaş yükleme olarak bilinen bir teknik kullanabilirsiniz. Bu yerel Açısal özellik, önce web uygulamasının yalnızca gerekli bitlerini yüklemenize, ardından gerektiğinde diğer modülleri yüklemenize olanak tanır.

Bu makalede, yavaş yükleme ve bunun web uygulamanızı hızlandırmaya nasıl yardımcı olabileceği hakkında bilgi edineceksiniz.

Geç Yükleme nedir?

Tembel yükleme, web sayfası öğelerini yalnızca gerektiğinde yükleme tekniğini ifade eder. Bunun muadili, her şeyin hemen yüklendiği veya yüklenmeye çalıştığı istekli yüklemedir . Tüm resimlerin, videoların, CSS'nin ve JavaScript kodunun isteyerek getirilmesi, uzun yükleme süreleri anlamına gelebilir — kullanıcılar için kötü haber.

Tembel yükleme, genellikle çok fazla içerik barındıran sitelerdeki resim ve videolar için kullanılır. Çok fazla bant genişliği kullanan ve sayfa görünümlerini yavaşlatan tüm ortamları bir kerede yüklemek yerine, bu öğeler sayfadaki konumları görüntüye kaydırılmak üzereyken yüklenir.

Angular, işlevselliğinin çoğu için JavaScript'e dayanan tek sayfalık bir uygulama çerçevesidir. Uygulamanızın JavaScript koleksiyonu, uygulama büyüdükçe kolayca genişleyebilir ve bu, veri kullanımında ve yükleme süresinde buna karşılık gelen bir artışla birlikte gelir. İşleri hızlandırmak için, önce gerekli modülleri getirmek için yavaş yüklemeyi kullanabilir ve ihtiyaç duyulana kadar diğer modüllerin yüklenmesini erteleyebilirsiniz.

Açısal Olarak Tembel Yüklemenin Faydaları

Yavaş yükleme, sitenizi daha kullanıcı dostu hale getirecek avantajlar sunar. Bunlar şunları içerir:

  • Daha hızlı yükleme süresi: JavaScript, sayfanızı görüntülemek ve verilerini yüklemek için talimatlar içerir. Bu nedenle, işlemeyi engelleyen bir kaynaktır . Bu, tarayıcının sayfanızı oluşturmadan önce tüm JavaScript'i yüklemek için beklemesi gerektiği anlamına gelir. Angular'da tembel yükleme yapıldığında, JavaScript ayrı olarak yüklenen parçalara bölünür. İlk yığın, yalnızca sayfanın ana modülü için gerekli olan mantığı içerir. İstekle yüklenir, ardından kalan modüller tembel olarak yüklenir. İlk yığının boyutunu küçülterek, sitenin daha hızlı yüklenmesini ve oluşturulmasını sağlarsınız.
  • Daha az veri kullanımı: Verileri parçalara bölerek ve gerektiğinde yükleyerek daha az bant genişliği kullanabilirsiniz.
  • Korunan tarayıcı kaynakları: Tarayıcı yalnızca gerekli olan parçaları yüklediğinden, gerekli olmayan kodu yorumlamaya ve işlemeye çalışırken belleği ve CPU'yu boşa harcamaz.
Hızlı yüklenen, kullanıcı dostu bir site ile rakiplerinizin bir adım önünde olmak ister misiniz? Tembel yüklemeye girin. Bu yerel açısal özellik ve yükleme sürelerinizi hızlandırmaya nasıl yardımcı olabileceği hakkında daha fazla bilgi edinin. Buradan başlayın ️ Tweetlemek için tıklayın

Açısal Tembel Yüklemeyi Uygulamak

Bu eğiticiyi takip etmek için aşağıdakilere ihtiyacınız olacak:

  • NodeJS yüklü
  • Angular ile ilgili temel bilgiler

Projenizi Hızlandırın

Projenizi oluşturmak için Angular CLI'yi kullanacaksınız. Şu komutu çalıştırarak CLI'yi npm kullanarak kurabilirsiniz:

npm install -g @angular/cli

Bundan sonra, Lazy Loading Demo adlı bir proje oluşturun:

ng new lazy-loading-demo --routing

Bu komut, yönlendirme ile tamamlanmış yeni bir Açısal proje oluşturur. Yalnızca uygulamanızın kodunu içeren src/app klasöründe çalışıyor olacaksınız. Bu klasör, ana yönlendirme dosyanızı içerir, app-routing.module.ts . Klasörün yapısı şöyle görünmelidir:

Ekran Görüntüsü: Bir terminalde görüntülenen Açısal klasör yapısı.
Angular projesinin klasör yapısı.

Rotalarla Özellik Modülü Oluşturma

Ardından, yavaş yüklenecek bir özellik modülü oluşturacaksınız. Bu modülü oluşturmak için şu komutu çalıştırın:

ng generate module blog --route blog --module app.module

Bu komut, yönlendirme ile birlikte BlogModule adlı bir modül oluşturur. src /app/app-routing.module.ts açarsanız, şimdi şöyle göründüğünü göreceksiniz:

 import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; const routes: Routes = [ { path: 'blog', loadChildren: () => import('./blog/blog.module').then(m => m.BlogModule) }]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }

Tembel yükleme için önemli olan kısım üçüncü satırdır:

 const routes: Routes = [ { path: 'blog', loadChildren: () => import('./blog/blog.module').then(m => m.BlogModule) }];

Bu çizgi rotaları tanımlar. Blog rotası, component yerine loadChildren bağımsız değişkenini kullanır. loadChildren bağımsız değişkeni, Angular'a rotayı tembel yüklemesini - modülü yalnızca rota ziyaret edildiğinde dinamik olarak içe aktarmasını ve ardından yönlendiriciye geri döndürmesini söyler. Modül, routing.module.ts dosyasında blog/** gibi kendi alt yollarını tanımlar. Oluşturduğunuz blog modülü şuna benzer:

 import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { BlogComponent } from './blog.component'; const routes: Routes = [{ path: '', component: BlogComponent }]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class BlogRoutingModule { }

Bu yönlendirme dosyasının '' tek bir rota içerdiğini fark edeceksiniz. Bu, /blog için çözümlenir ve BlogComponent'e işaret eder. Bu dosyada daha fazla bileşen ekleyebilir ve bu rotaları tanımlayabilirsiniz.

Örneğin, belirli bir blog gönderisiyle ilgili ayrıntıları çekecek bir bileşen eklemek isterseniz, bileşeni şu komutla oluşturabilirsiniz:

ng generate component blog/detail

Bu, blog detayı için bileşen oluşturur ve onu blog modülüne ekler. Bunun için bir rota eklemek için, onu basitçe rotalar dizinize ekleyebilirsiniz:

 const routes: Routes = [{ path: '', component: BlogComponent }, {path:"/:title",component: DetailComponent}];

Bu, blog/:title için çözümlenen bir rota ekler (örneğin, blog/angular-tutorial ). Bu yol dizisi yavaş yüklenmiştir ve ilk pakete dahil değildir.

Geç Yüklemeyi Doğrulayın

Tembel yüklemenin çalışıp çalışmadığını ng serve komutunu çalıştırarak ve çıktıyı gözlemleyerek kolayca kontrol edebilirsiniz. Çıktınızın altında şöyle bir şey görmelisiniz:

Ekran Görüntüsü: Terminalde Angular'ın ng serve komutunun çıktısı.
Angular'ın ng serve kullanılarak yavaş yükleme doğrulanıyor.

Yukarıdaki çıktı iki bölüme ayrılmıştır: Initial Chunk Files , sayfa ilk yüklendiğinde yüklenen dosyalardır. Lazy Chunk Files yavaş yüklenir. Blog modülü bu örnekte listelenmiştir.

Tarayıcı Ağ Günlükleri Aracılığıyla Geç Yükleme Kontrolü

Geç yüklemeyi onaylamanın başka bir yolu da, tarayıcınızın Geliştirici Araçları panelindeki sekmesini kullanmaktır. (Windows'ta bu, Chrome ve Microsoft Edge'de F12 ve Firefox'ta CtrlShiftI'dir . Mac'te bu, Chrome, Firefox ve Safari'de CommandOptionI'dir .)

Yalnızca ağ üzerinden yüklenen JavaScript dosyalarını görüntülemek için JS filtresini seçin. Uygulamanın ilk yüklenmesinden sonra, şöyle bir şey almalısınız:

Ekran Görüntüsü: Geliştirici Araçları'nda oturum açmış açısal JavaScript dosyaları.
Geliştirici Araçları'nda görüntülenen JavaScript indirmelerinin ilk günlüğü.

/blog gittiğinizde, yeni bir öbek olan src_app_blog_blog_module_ts.js yüklendiğini fark edeceksiniz. Bu, modülünüzün yalnızca siz o rotaya gittiğinizde istendiği ve geç yüklendiği anlamına gelir. Ağ günlüğü şöyle görünmelidir:

Ekran Görüntüsü: Geliştirici Araçları'nda oturum açmış Angular JavaScript dosyalarının güncellenmiş görünümü.
Geliştirici Araçları tarafından günlüğe kaydedilen indirmelerde görünen yavaş yüklenmiş modül.

Tüm medyayı aynı anda yüklemek = uzun yükleme süreleri! Bu, kullanıcılarınız için kötü bir haber Yavaş yüklemenin hem web sitenizin performansını hem de kullanıcılarınızın memnuniyetini nasıl artırabileceğini buradan kontrol edin. Tweetlemek için tıklayın

Tembel Yükleme ve İstekli Yükleme

Karşılaştırma için, hevesle yüklenmiş bir modül de oluşturalım ve bunun dosya boyutunu ve yükleme süresini nasıl etkilediğini görelim. Bunu göstermek için, kimlik doğrulama için bir modül oluşturacaksınız. Kimlik doğrulama tüm kullanıcıların yapmasını isteyebileceğiniz bir şey olduğundan, böyle bir modülün hevesle yüklenmesi gerekebilir.

CLI'de şu komutu çalıştırarak bir AuthModule oluşturun:

ng generate module auth --routing --module app.module

Bu, modülü ve bir yönlendirme dosyasını oluşturur. Ayrıca modülü app.module.ts dosyasına ekler. Ancak, geçen sefer bir modül oluşturmak için kullandığımız komuttan farklı olarak, bu sefer tembel yüklü bir yol eklemiyor. --route <name> yerine --routing parametresini kullanır. Bu, kimlik doğrulama modülünü app.module.ts içindeki imports dizisine ekler:

 @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, AppRoutingModule, AuthModule //added auth module ], providers: [], bootstrap: [AppComponent] })

AuthModule'u AppModule içe aktarma dizinize eklemek, kimlik doğrulama modülünün ilk yığın dosyalarına eklendiği ve ana JavaScript paketine dahil edileceği anlamına gelir. Bunu doğrulamak için, ng serve tekrar çalıştırabilir ve çıktıyı gözlemleyebilirsiniz:

Ekran Görüntüsü: Kimlik doğrulama modülü eklendikten sonra açısal komut dosyaları.
Kimlik doğrulama modülü eklendikten sonra Angular'ın ng serve komutunun çıktısı.

Gördüğünüz gibi, tembel yığın dosyalarının bir parçası olarak kimlik doğrulama modülü dahil edilmemiştir. Ek olarak, ilk paketin boyutu arttı. main.js dosyasının boyutu neredeyse iki katına çıkarak 8 KB'den 15 KB'ye çıktı. Bu örnekte, bileşenler çok fazla kod içermediğinden artış küçüktür. Ancak, bileşenleri mantıkla doldurduğunuzda, bu dosya boyutu artacak ve yavaş yükleme için güçlü bir durum oluşturacaktır.

Özet

Modülleri yalnızca gerektiğinde getirmek için Açısal'da yavaş yüklemeyi nasıl kullanacağınızı öğrendiniz. Tembel yükleme, yükleme sürelerini iyileştirmek, veri kullanımını azaltmak ve ön uç ve arka uç kaynaklarınızı daha iyi kullanmak için harika bir tekniktir.

İçerik dağıtım ağları ve JavaScript'i küçültme gibi teknolojilerin yanı sıra geç yükleme, hem web sitenizin performansını hem de kullanıcılarınızın memnuniyetini artıracaktır.

Bir WordPress sitesi geliştiriyorsanız ve hızı gerçekten artırmak istiyorsanız, bazı etkileyici rakamlar görmek için Kinsta Edge Önbelleğe Alma hakkında okuyun.