jQuery Academy · Ders

Önbelleğe Alma ve Ertelenmiş Nesnelerden Yararlanma

Gereksiz DOM aramalarından kaçınmak için seçici önbelleğe alma kullanın; eşzamansız işlemleri daha etkili yönetmek, kod okunabilirliğini ve performansını artırmak için jQuery Ertelenmiş nesnelerini anlayın.

3. ders / 311 adım

Önbelleğe Alma ve Ertelenmiş Nesnelerden Yararlanma, CoddyKit'te ücretsiz bir jQuery Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, jQuery Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. jQuery Academy kursu toplamda 3 dersten oluşur.

Önbelleğe Alma ve Deferreds ile Performansı Artırın

Hoş geldiniz! Bu derste jQuery uygulamalarınızı daha hızlı ve verimli hâle getiren iki güçlü tekniği inceleyeceğiz: seçici önbelleğe alma ve Deferred nesneleri.

Bu yöntemler, gereksiz tekrarlı çalışmaları azaltmanıza ve karmaşık eşzamansız işlemleri kolayca yönetmenize yardımcı olur.

Seçici Önbelleğe Alma Neden Önemlidir

$("#myElement") veya $(".item") gibi bir jQuery seçicisi kullandığınız her seferde jQuery, eşleşen öğeleri bulmak için Belge Nesne Modeli (DOM) içinde gezinmek zorundadır.

  • Bu gezinme, özellikle karmaşık seçicilerde veya büyük DOM ağaçlarında yavaş olabilir.
  • Aynı öğeler için yapılan tekrarlı aramalar işlem gücünü boşa harcar.

Önbelleğe alma bu sorunu önlememize yardımcı olur!

Seçimlerinizi Saklayın

DOM'u birden çok kez aramak yerine, bir jQuery seçiminin sonucunu bir değişkende saklayın. Bu değişken daha sonra jQuery nesnesine bir başvuru tutar.

Bir seçimi nasıl önbelleğe aldığımızı görmek için bu örneği çalıştırmayı deneyin:

// Imagine this is in your HTML
// <div id="myDiv">Hello</div>

// Simulate jQuery selecting an element
// In a real browser, this would return a jQuery object
const $myElement = {
  id: "myDiv",
  text: "Hello",
  // Simulate jQuery methods
  css: function(prop, value) {
    console.log(`Setting ${prop} to ${value} on #${this.id}`);
  },
  addClass: function(cls) {
    console.log(`Adding class "${cls}" to #${this.id}`);
  }
};

console.log("--- Without Caching (simulated) ---");
// This would ideally re-query the DOM
$myElement.css("color", "blue"); // Simulates $("#myDiv").css(...)
$myElement.addClass("highlight"); // Simulates $("#myDiv").addClass(...)

console.log("\n--- With Caching ---");
// We already have $myElement, so no re-query
$myElement.css("font-weight", "bold");
$myElement.addClass("active");

Verimlilik için Zincirleme

jQuery'nin yöntem zincirleme özelliği, seçilmiş aynı öğe kümesi üzerinde işlem yaptığı için zaten bir verimlilik biçimidir.

Ancak kodunuzun farklı noktalarında veya farklı olay işleyicilerinde aynı öğeler üzerinde işlem yapmanız gerektiğinde önbelleğe alma kritik önem taşır.

// Chaining is good for sequential ops
$("#myElement")
  .addClass("active")
  .css("color", "blue")
  .fadeIn();

// Caching is better for repeated, non-sequential ops
const $cachedElement = $("#myElement");
// Later in code...
$cachedElement.trigger("click");
// Even later...
$cachedElement.removeClass("active");

Seçimleri Yeniden Kullanma

Bir öğe grubuyla sık sık etkileşim kurduğunuz bir senaryoyu düşünün. İlk seçimi önbelleğe almak, DOM sorgularının tekrarlanmasını önler.

Bu yaklaşım özellikle döngüler, olay işleyicileri veya aynı öğe kümesi üzerinde çalışan işlevler içinde kullanışlıdır.

// Imagine HTML: <li class="item">1</li> <li class="item">2</li>
// <li class="item">3</li> <button id="toggleBtn">Toggle</button>

// Simulate jQuery context
const $items = [{
  text: "Item 1"
}, {
  text: "Item 2"
}];
const $toggleButton = {
  text: "Toggle Button"
};

console.log("Cached items count:", $items.length);
console.log("Cached button text:", $toggleButton.text);

// Later, you might need them again, without re-querying
// e.g., in an event handler
function handleToggle() {
  // Use $items and $toggleButton directly
  console.log("Toggle button clicked! Working with cached items.");
}

// Call the function
handleToggle();

Eşzamansız İşlemleri Yönetme

jQuery'deki bir Deferred nesnesi, birden çok geri çağırma işlevini kuyruklara kaydetmek, geri çağırma kuyruklarını çağırmak ve herhangi bir eşzamanlı veya eşzamansız işlemin başarı ya da başarısızlık durumunu aktarmak için bir yol sunar.

  • Bunu gelecekte elde edilecek bir sonuç için promise olarak düşünebilirsiniz.
  • AJAX istekleri, animasyonlar veya zamanlayıcılar gibi işlemlerle ilgilenen kodu düzenlemeye yardımcı olur.

Yeni Bir Deferred Oluşturma

$.Deferred() kullanarak yeni bir Deferred nesnesi oluşturabilirsiniz. Bu nesnenin durumunu kontrol eden yöntemleri vardır: başarı için resolve(), başarısızlık için reject().

Gecikmeden sonra çözümlenen temel bir deferred'ın nasıl kurulacağına bakalım.

function doSomethingAsync() {
  const dfd = $.Deferred(); // Create a new Deferred

  setTimeout(function() {
    const success = Math.random() > 0.5; // Simulate success/failure
    if (success) {
      dfd.resolve("Operation successful!"); // Resolve on success
    } else {
      dfd.reject("Operation failed!"); // Reject on failure
    }
  }, 1000); // Simulate 1-second delay

  return dfd.promise(); // Return the Promise part
}

// This code will run when the scene loads
// We'll attach handlers in the next scene
console.log("Deferred created. Waiting for resolution...");

.done() ve .fail() Kullanımı

Bir Deferred nesneniz (veya onun promise'ı) olduğunda, başarı için .done() ve hata yönetimi için .fail() kullanarak geri çağırma işlevleri ekleyebilirsiniz.

.always() geri çağırması, başarı veya başarısızlıktan bağımsız olarak çalışır.

function doSomethingAsync() {
  const dfd = $.Deferred();
  setTimeout(function() {
    const success = true; // For this example, let's ensure success
    if (success) {
      dfd.resolve("Data loaded!");
    } else {
      dfd.reject("Network error!");
    }
  }, 500);
  return dfd.promise();
}

const myPromise = doSomethingAsync();

myPromise.done(function(message) {
  console.log("SUCCESS:", message);
});

myPromise.fail(function(errorMessage) {
  console.log("FAILED:", errorMessage);
});

myPromise.always(function() {
  console.log("Operation complete (done or failed).");
});

console.log("Initiating async operation...");

.then() ile Sonuçları Dönüştürme

.done() ve .fail() son işlemler için kullanılırken .then() daha esnektir. Çözümlenen değeri dönüştürebilir veya hatta yeni bir promise döndürebilir; böylece işlemlerin sıralı biçimde yürütülmesini sağlar.

Bir sonucu sonraki aşamaya aktarmadan önce işlemek için .then() kullanabilirsiniz.

function fetchData() {
  const dfd = $.Deferred();
  setTimeout(() => {
    console.log("Data fetched.");
    dfd.resolve({
      id: 1,
      name: "Widget"
    });
  }, 500);
  return dfd.promise();
}

fetchData()
  .then(function(data) {
    console.log("Processing fetched data:", data);
    return data.name.toUpperCase(); // Transform the data
  })
  .then(function(processedName) {
    console.log("Transformed name:", processedName);
    // This second .then() receives the result of the first .then()
  })
  .fail(function(error) {
    console.error("Error:", error);
  });

console.log("Starting data fetch and transformation...");

Önbelleğe Alma ve Deferreds Sınavı

Kısa bir meydan okumaya hazır mısınız? Seçici önbelleğe alma ve Deferred nesneleri konusundaki anlayışınızı sınayın.

Özet: Daha Hızlı ve Akıllı jQuery

Harika iş çıkardınız! jQuery uygulamanızın performansını ve kod düzenini nasıl önemli ölçüde iyileştireceğinizi öğrendiniz:

  • Seçici Önbelleğe Alma: Maliyetli ve tekrarlı DOM aramalarından kaçınmak için jQuery seçimlerini değişkenlerde saklayın.
  • Deferred Nesneleri: Karmaşık eşzamansız işlemleri düzenli ve verimli biçimde yönetmek için $.Deferred(), .resolve(), .reject(), .done(), .fail() ve .then() kullanın.

Daha sağlam ve yüksek performanslı web uygulamaları geliştirmek için bu teknikleri uygulayın!

Başlamak ücretsiz

Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
22
Dersler
48

Sıkça Sorulan Sorular

“Önbelleğe Alma ve Ertelenmiş Nesnelerden Yararlanma” dersi ücretsiz mi?

Evet — “Önbelleğe Alma ve Ertelenmiş Nesnelerden Yararlanma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve jQuery Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. jQuery Academy kursu toplamda 3 dersten oluşur.

“Önbelleğe Alma ve Ertelenmiş Nesnelerden Yararlanma” dersinde ne öğreneceğim?

Gereksiz DOM aramalarından kaçınmak için seçici önbelleğe alma kullanın; eşzamansız işlemleri daha etkili yönetmek, kod okunabilirliğini ve performansını artırmak için jQuery Ertelenmiş nesnelerini a… jQuery Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

jQuery Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te jQuery Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.

“Önbelleğe Alma ve Ertelenmiş Nesnelerden Yararlanma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu jQuery Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her jQuery Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. DOM Değiştirme İşlemlerini İyileştirme
  2. Etkili Olay Yönetimi ve Hız Sınırlama
  3. Önbelleğe Alma ve Ertelenmiş Nesnelerden Yararlanma
← jQuery Academy Sayfasına Dön